{
  "contractName": "ERC1155WithTotals",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        }
      ],
      "name": "TransferBatch",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "TransferSingle",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "value",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "URI",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "accounts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        }
      ],
      "name": "balanceOfBatch",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256[]",
          "name": "ids",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeBatchTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "uri",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"constructor\":{\"params\":{\"uri_\":\"Description URI.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"totalSupply(uint256)\":{\"params\":{\"id\":\"Token ID.\"},\"returns\":{\"_0\":\"Total supply.\"}},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"title\":\"A base contract for an ERC-1155 contract with calculation of totals.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Construct a token contract with given description URI.\"},\"totalSupply(uint256)\":{\"notice\":\"Total supply of a token (conforms to `IERC1155Views`).\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol\":\"ERC1155WithTotals\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x7dcdf324fd4d2dec68846958865ae833956cb4ad80cd83cf6f107e7c33500bf6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5cddf52afd931cbf983100a0415f04e6646aa90d100fd91437d2a75e3b241206\",\"dweb:/ipfs/QmXXJ2qoC1rSsKdg5s87m3BPQ3RFGw2rNrNv7KygzGJ9zQ\"]},\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol\":{\"keccak256\":\"0x1d5fcf7a70d6f5dcd4ddf25caece633a9b4d17154fb98b5fc9a5ae4600b2db15\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://9638d138ecec5f7f6651cf690295fdaaa99023d58555360fa801ace5cac88a9d\",\"dweb:/ipfs/QmUWf56QEe5uSfpHB7inMUGzufNZSxyu8aszLzoYMZHMYf\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xd6b90e604fb2eb2d641c7110c72440bf2dc999ec6ab8ff60f200e71ca75d1d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7b92d8ab83b21ff984b1f0d6d66897d5afb1f2052004cbcb133cea023e0ae468\",\"dweb:/ipfs/QmTarypkQrFp4UMjTh7Zzhz2nZLz5uPS4nJQtHDEuwBVe6\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xf70bc25d981e4ec9673a995ad2995d5d493ea188d3d8f388bba9c227ce09fb82\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd970f51e3a77790c2f02b5b1759827c3b897c3d98c407b3631e8af32e3dc93c\",\"dweb:/ipfs/QmPF85Amgbqjk3SNZKsPCsqCw8JfwYEPMnnhvMJUyX58je\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x61321d2c86346045bf394885ee3afeecc65f9daad2694bc19110967588fd7b5d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1703b877203e0447ede72dcf73f1c4f2089b415bd1c44877904128a64fafed5b\",\"dweb:/ipfs/QmaZoYDo2FWtKcwCc9zuabU6zri8KV9xJrhU614d93sLid\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xd918cca1b659f588a6d12d05fd7196179a8b1eac9133d7f77da7ef3133e13256\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c75d578f42e2e2e427b934e6c41cc759be2d0a52155868308e915328c8feb2b\",\"dweb:/ipfs/QmbFNHtWAoNhe82Hy6yKTePWJRczqzp1APSBfLS9XfAN6e\"]},\"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x2690a9b7f4f7489b8d25a4fc6bffc02ec3971fb41ed6c8b59adef2833bdab07c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8148c99452b6793ac9599abdc8bdaf4eeb47f34590beea8aa01089be14e2990c\",\"dweb:/ipfs/QmNdenmZ4EDfH9TuBas3pHeGuZvDNo2rsfgUj6ka8vuH37\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xa6a15ddddcbf29d2922a1e0d4151b5d2d33da24b93cc9ebc12390e0d855532f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c119bcaecfa853d564ac88d312777f75fa1126a3bca88a3371adb0ad9f35cb0\",\"dweb:/ipfs/QmY9UPuXeSKq86Zh38fE43VGQPhKMN34mkuFSFqPcr6nvZ\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: LGPL-3.0-or-later\npragma solidity ^0.7.1;\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport { ERC1155 } from \"./ERC1155.sol\";\n\n/// @title A base contract for an ERC-1155 contract with calculation of totals.\nabstract contract ERC1155WithTotals is ERC1155 {\n    using SafeMath for uint256;\n\n    // Mapping (token => total).\n    mapping(uint256 => uint256) private totalBalances;\n\n    /// Construct a token contract with given description URI.\n    /// @param uri_ Description URI.\n    constructor (string memory uri_) ERC1155(uri_) { }\n\n    // Overrides //\n\n    // Need also update totals - commented out\n    // function _mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal virtual override {\n    //     return super._mintBatch(_originalAddress(to), ids, amounts, data);\n    // }\n\n    // Need also update totals - commented out\n    // function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) internal virtual override {\n    //     return super._burnBatch(_originalAddress(account), ids, amounts);\n    // }\n\n    /// Total supply of a token (conforms to `IERC1155Views`).\n    /// @param id Token ID.\n    /// @return Total supply.\n    function totalSupply(uint256 id) public view returns (uint256) {\n        return totalBalances[id];\n    }\n\n    /// Mint a token.\n    /// @param to Whom to mint to.\n    /// @param id Token ID.\n    /// @param value Amount to mint.\n    /// @param data Additional data.\n    function _mint(address to, uint256 id, uint256 value, bytes memory data) internal override {\n        require(to != address(0), \"ERC1155: mint to the zero address\");\n\n        _doMint(to, id, value);\n        emit TransferSingle(msg.sender, address(0), to, id, value);\n\n        _doSafeTransferAcceptanceCheck(msg.sender, address(0), to, id, value, data);\n    }\n\n    /// Mint zero or more tokens.\n    /// @param to Whom to mint to.\n    /// @param ids Token IDs.\n    /// @param values Amounts to mint.\n    /// @param data Additional data.\n    function _batchMint(address to, uint256[] memory ids, uint256[] memory values, bytes memory data) internal {\n        require(to != address(0), \"ERC1155: batch mint to the zero address\");\n        require(ids.length == values.length, \"ERC1155: IDs and values must have same lengths\");\n\n        for(uint i = 0; i < ids.length; i++) {\n            _doMint(to, ids[i], values[i]);\n        }\n\n        emit TransferBatch(msg.sender, address(0), to, ids, values);\n\n        _doSafeBatchTransferAcceptanceCheck(msg.sender, address(0), to, ids, values, data);\n    }\n\n    /// Burn a token.\n    /// @param owner Whose tokens to burn.\n    /// @param id Token ID.\n    /// @param value Amount to mint.\n    function _burn(address owner, uint256 id, uint256 value) internal override {\n        _doBurn(owner, id, value);\n        emit TransferSingle(msg.sender, owner, address(0), id, value);\n    }\n\n    /// Burn zero or more tokens.\n    /// @param owner Whose tokens to burn.\n    /// @param ids Token IDs.\n    /// @param values Amounts to mint.\n    function _batchBurn(address owner, uint256[] memory ids, uint256[] memory values) internal {\n        require(ids.length == values.length, \"ERC1155: IDs and values must have same lengths\");\n\n        for(uint i = 0; i < ids.length; i++) {\n            _doBurn(owner, ids[i], values[i]);\n        }\n\n        emit TransferBatch(msg.sender, owner, address(0), ids, values);\n    }\n\n    function _doMint(address to, uint256 id, uint256 value) private {\n        totalBalances[id] = totalBalances[id].add(value);\n        _balances[id][to] = _balances[id][to] + value; // The previous didn't overflow, therefore this doesn't overflow.\n    }\n\n    function _doBurn(address from, uint256 id, uint256 value) private {\n        _balances[id][from] = _balances[id][from].sub(value);\n        totalBalances[id] = totalBalances[id] - value; // The previous didn't overflow, therefore this doesn't overflow.\n    }\n}",
  "sourcePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol",
  "ast": {
    "absolutePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol",
    "exportedSymbols": {
      "ERC1155": [
        3296
      ],
      "ERC1155WithTotals": [
        3656
      ],
      "SafeMath": [
        4589
      ]
    },
    "id": 3657,
    "license": "LGPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3325,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".1"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:7"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 3326,
        "nodeType": "ImportDirective",
        "scope": 3657,
        "sourceUnit": 4590,
        "src": "70:51:7",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol",
        "file": "./ERC1155.sol",
        "id": 3328,
        "nodeType": "ImportDirective",
        "scope": 3657,
        "sourceUnit": 3297,
        "src": "122:40:7",
        "symbolAliases": [
          {
            "foreign": {
              "id": 3327,
              "name": "ERC1155",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "131:7:7",
              "typeDescriptions": {}
            }
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 3330,
              "name": "ERC1155",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3296,
              "src": "283:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC1155_$3296",
                "typeString": "contract ERC1155"
              }
            },
            "id": 3331,
            "nodeType": "InheritanceSpecifier",
            "src": "283:7:7"
          }
        ],
        "contractDependencies": [
          3296,
          4324,
          4381,
          4393,
          4790,
          4805
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 3329,
          "nodeType": "StructuredDocumentation",
          "src": "164:80:7",
          "text": "@title A base contract for an ERC-1155 contract with calculation of totals."
        },
        "fullyImplemented": true,
        "id": 3656,
        "linearizedBaseContracts": [
          3656,
          3296,
          4805,
          4790,
          4381,
          4393,
          4324
        ],
        "name": "ERC1155WithTotals",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3334,
            "libraryName": {
              "id": 3332,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4589,
              "src": "303:8:7",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$4589",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "297:27:7",
            "typeName": {
              "id": 3333,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "316:7:7",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 3338,
            "mutability": "mutable",
            "name": "totalBalances",
            "nodeType": "VariableDeclaration",
            "scope": 3656,
            "src": "363:49:7",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
              "typeString": "mapping(uint256 => uint256)"
            },
            "typeName": {
              "id": 3337,
              "keyType": {
                "id": 3335,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "371:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "363:27:7",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                "typeString": "mapping(uint256 => uint256)"
              },
              "valueType": {
                "id": 3336,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "382:7:7",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 3347,
              "nodeType": "Block",
              "src": "566:3:7",
              "statements": []
            },
            "documentation": {
              "id": 3339,
              "nodeType": "StructuredDocumentation",
              "src": "419:95:7",
              "text": "Construct a token contract with given description URI.\n @param uri_ Description URI."
            },
            "id": 3348,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 3344,
                    "name": "uri_",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3341,
                    "src": "560:4:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 3345,
                "modifierName": {
                  "id": 3343,
                  "name": "ERC1155",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3296,
                  "src": "552:7:7",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_ERC1155_$3296_$",
                    "typeString": "type(contract ERC1155)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "552:13:7"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3341,
                  "mutability": "mutable",
                  "name": "uri_",
                  "nodeType": "VariableDeclaration",
                  "scope": 3348,
                  "src": "532:18:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 3340,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "532:6:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "531:20:7"
            },
            "returnParameters": {
              "id": 3346,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "566:0:7"
            },
            "scope": 3656,
            "src": "519:50:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3360,
              "nodeType": "Block",
              "src": "1303:41:7",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 3356,
                      "name": "totalBalances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3338,
                      "src": "1320:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 3358,
                    "indexExpression": {
                      "id": 3357,
                      "name": "id",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3351,
                      "src": "1334:2:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "1320:17:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3355,
                  "id": 3359,
                  "nodeType": "Return",
                  "src": "1313:24:7"
                }
              ]
            },
            "documentation": {
              "id": 3349,
              "nodeType": "StructuredDocumentation",
              "src": "1119:116:7",
              "text": "Total supply of a token (conforms to `IERC1155Views`).\n @param id Token ID.\n @return Total supply."
            },
            "functionSelector": "bd85b039",
            "id": 3361,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "totalSupply",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3351,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3361,
                  "src": "1261:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3350,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1261:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1260:12:7"
            },
            "returnParameters": {
              "id": 3355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3354,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3361,
                  "src": "1294:7:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3353,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1294:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1293:9:7"
            },
            "scope": 3656,
            "src": "1240:104:7",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              2844
            ],
            "body": {
              "id": 3415,
              "nodeType": "Block",
              "src": "1600:266:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3375,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3364,
                          "src": "1618:2:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 3378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1632:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1624:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 3376,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1624:7:7",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1624:10:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1618:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 3381,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1636:35:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                          "typeString": "literal_string \"ERC1155: mint to the zero address\""
                        },
                        "value": "ERC1155: mint to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                          "typeString": "literal_string \"ERC1155: mint to the zero address\""
                        }
                      ],
                      "id": 3374,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1610:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1610:62:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3383,
                  "nodeType": "ExpressionStatement",
                  "src": "1610:62:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3385,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3364,
                        "src": "1691:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3386,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3366,
                        "src": "1695:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3387,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3368,
                        "src": "1699:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3384,
                      "name": "_doMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3620,
                      "src": "1683:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 3388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1683:22:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3389,
                  "nodeType": "ExpressionStatement",
                  "src": "1683:22:7"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3391,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "1735:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3392,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1735:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1755:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1747:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3393,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1747:7:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1747:10:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3397,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3364,
                        "src": "1759:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3398,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3366,
                        "src": "1763:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3399,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3368,
                        "src": "1767:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3390,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4687,
                      "src": "1720:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 3400,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1720:53:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3401,
                  "nodeType": "EmitStatement",
                  "src": "1715:58:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3403,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "1815:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "1815:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1835:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1827:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3405,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1827:7:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1827:10:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3409,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3364,
                        "src": "1839:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3410,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3366,
                        "src": "1843:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3411,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3368,
                        "src": "1847:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3412,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3370,
                        "src": "1854:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3402,
                      "name": "_doSafeTransferAcceptanceCheck",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3200,
                      "src": "1784:30:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256,bytes memory)"
                      }
                    },
                    "id": 3413,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1784:75:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3414,
                  "nodeType": "ExpressionStatement",
                  "src": "1784:75:7"
                }
              ]
            },
            "documentation": {
              "id": 3362,
              "nodeType": "StructuredDocumentation",
              "src": "1350:154:7",
              "text": "Mint a token.\n @param to Whom to mint to.\n @param id Token ID.\n @param value Amount to mint.\n @param data Additional data."
            },
            "id": 3416,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3372,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1591:8:7"
            },
            "parameters": {
              "id": 3371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3364,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 3416,
                  "src": "1524:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3363,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1524:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3366,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3416,
                  "src": "1536:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3365,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1536:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3368,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 3416,
                  "src": "1548:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1548:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3370,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 3416,
                  "src": "1563:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3369,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1563:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1523:58:7"
            },
            "returnParameters": {
              "id": 3373,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1600:0:7"
            },
            "scope": 3656,
            "src": "1509:357:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3497,
              "nodeType": "Block",
              "src": "2154:446:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3436,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3431,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3419,
                          "src": "2172:2:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 3434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2186:1:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 3433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2178:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 3432,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2178:7:7",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2178:10:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2172:16:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206261746368206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 3437,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2190:41:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e3adb1c77f070d4645b892eb1dd5fdd83aa3b285867ef785899841af41a4878b",
                          "typeString": "literal_string \"ERC1155: batch mint to the zero address\""
                        },
                        "value": "ERC1155: batch mint to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e3adb1c77f070d4645b892eb1dd5fdd83aa3b285867ef785899841af41a4878b",
                          "typeString": "literal_string \"ERC1155: batch mint to the zero address\""
                        }
                      ],
                      "id": 3430,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2164:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3438,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2164:68:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3439,
                  "nodeType": "ExpressionStatement",
                  "src": "2164:68:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 3441,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3422,
                            "src": "2250:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2250:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 3443,
                            "name": "values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3425,
                            "src": "2264:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2264:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2250:27:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2049447320616e642076616c756573206d75737420686176652073616d65206c656e67746873",
                        "id": 3446,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2279:48:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b7106002d40c7c2d33830b8d37d9874e7c6eeffd05a570b1dbecab6fef07813e",
                          "typeString": "literal_string \"ERC1155: IDs and values must have same lengths\""
                        },
                        "value": "ERC1155: IDs and values must have same lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b7106002d40c7c2d33830b8d37d9874e7c6eeffd05a570b1dbecab6fef07813e",
                          "typeString": "literal_string \"ERC1155: IDs and values must have same lengths\""
                        }
                      ],
                      "id": 3440,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2242:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3447,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2242:86:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3448,
                  "nodeType": "ExpressionStatement",
                  "src": "2242:86:7"
                },
                {
                  "body": {
                    "id": 3470,
                    "nodeType": "Block",
                    "src": "2376:55:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3461,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3419,
                              "src": "2398:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3462,
                                "name": "ids",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3422,
                                "src": "2402:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3464,
                              "indexExpression": {
                                "id": 3463,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3450,
                                "src": "2406:1:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2402:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3465,
                                "name": "values",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3425,
                                "src": "2410:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3467,
                              "indexExpression": {
                                "id": 3466,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3450,
                                "src": "2417:1:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2410:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3460,
                            "name": "_doMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3620,
                            "src": "2390:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2390:30:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3469,
                        "nodeType": "ExpressionStatement",
                        "src": "2390:30:7"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3453,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3450,
                      "src": "2355:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3454,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3422,
                        "src": "2359:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 3455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "2359:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2355:14:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3471,
                  "initializationExpression": {
                    "assignments": [
                      3450
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3450,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3471,
                        "src": "2343:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3449,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "2343:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3452,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3451,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2352:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "2343:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3458,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "2371:3:7",
                      "subExpression": {
                        "id": 3457,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3450,
                        "src": "2371:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3459,
                    "nodeType": "ExpressionStatement",
                    "src": "2371:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "2339:92:7"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3473,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2460:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3474,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2460:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2480:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2472:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3475,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2472:7:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2472:10:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3479,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3419,
                        "src": "2484:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3480,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3422,
                        "src": "2488:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 3481,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3425,
                        "src": "2493:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "id": 3472,
                      "name": "TransferBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4702,
                      "src": "2446:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                      }
                    },
                    "id": 3482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2446:54:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3483,
                  "nodeType": "EmitStatement",
                  "src": "2441:59:7"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3485,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2547:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2547:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2567:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2559:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3487,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2559:7:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3490,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2559:10:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3491,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3419,
                        "src": "2571:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3492,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3422,
                        "src": "2575:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 3493,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3425,
                        "src": "2580:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 3494,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3427,
                        "src": "2588:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 3484,
                      "name": "_doSafeBatchTransferAcceptanceCheck",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3267,
                      "src": "2511:35:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)"
                      }
                    },
                    "id": 3495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2511:82:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3496,
                  "nodeType": "ExpressionStatement",
                  "src": "2511:82:7"
                }
              ]
            },
            "documentation": {
              "id": 3417,
              "nodeType": "StructuredDocumentation",
              "src": "1872:170:7",
              "text": "Mint zero or more tokens.\n @param to Whom to mint to.\n @param ids Token IDs.\n @param values Amounts to mint.\n @param data Additional data."
            },
            "id": 3498,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_batchMint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3428,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3419,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 3498,
                  "src": "2067:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3418,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2067:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3422,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 3498,
                  "src": "2079:20:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3420,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2079:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3421,
                    "nodeType": "ArrayTypeName",
                    "src": "2079:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3425,
                  "mutability": "mutable",
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "scope": 3498,
                  "src": "2101:23:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3423,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2101:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3424,
                    "nodeType": "ArrayTypeName",
                    "src": "2101:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3427,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 3498,
                  "src": "2126:17:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3426,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2126:5:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2066:78:7"
            },
            "returnParameters": {
              "id": 3429,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2154:0:7"
            },
            "scope": 3656,
            "src": "2047:553:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              3021
            ],
            "body": {
              "id": 3527,
              "nodeType": "Block",
              "src": "2811:113:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3510,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3501,
                        "src": "2829:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3511,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3503,
                        "src": "2836:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3512,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3505,
                        "src": "2840:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3509,
                      "name": "_doBurn",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3655,
                      "src": "2821:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,uint256)"
                      }
                    },
                    "id": 3513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2821:25:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3514,
                  "nodeType": "ExpressionStatement",
                  "src": "2821:25:7"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3516,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2876:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3517,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2876:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3518,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3501,
                        "src": "2888:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2903:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2895:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3519,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2895:7:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2895:10:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3523,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3503,
                        "src": "2907:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3524,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3505,
                        "src": "2911:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3515,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4687,
                      "src": "2861:14:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,address,uint256,uint256)"
                      }
                    },
                    "id": 3525,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2861:56:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3526,
                  "nodeType": "EmitStatement",
                  "src": "2856:61:7"
                }
              ]
            },
            "documentation": {
              "id": 3499,
              "nodeType": "StructuredDocumentation",
              "src": "2606:125:7",
              "text": "Burn a token.\n @param owner Whose tokens to burn.\n @param id Token ID.\n @param value Amount to mint."
            },
            "id": 3528,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 3507,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2802:8:7"
            },
            "parameters": {
              "id": 3506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3501,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3528,
                  "src": "2751:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3500,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2751:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3503,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3528,
                  "src": "2766:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3502,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2766:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3505,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 3528,
                  "src": "2778:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3504,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2778:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2750:42:7"
            },
            "returnParameters": {
              "id": 3508,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2811:0:7"
            },
            "scope": 3656,
            "src": "2736:188:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3584,
              "nodeType": "Block",
              "src": "3167:281:7",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 3541,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3534,
                            "src": "3185:3:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3185:10:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 3543,
                            "name": "values",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3537,
                            "src": "3199:6:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3199:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3185:27:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2049447320616e642076616c756573206d75737420686176652073616d65206c656e67746873",
                        "id": 3546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3214:48:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b7106002d40c7c2d33830b8d37d9874e7c6eeffd05a570b1dbecab6fef07813e",
                          "typeString": "literal_string \"ERC1155: IDs and values must have same lengths\""
                        },
                        "value": "ERC1155: IDs and values must have same lengths"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b7106002d40c7c2d33830b8d37d9874e7c6eeffd05a570b1dbecab6fef07813e",
                          "typeString": "literal_string \"ERC1155: IDs and values must have same lengths\""
                        }
                      ],
                      "id": 3540,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3177:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3177:86:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3548,
                  "nodeType": "ExpressionStatement",
                  "src": "3177:86:7"
                },
                {
                  "body": {
                    "id": 3570,
                    "nodeType": "Block",
                    "src": "3311:58:7",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3561,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3531,
                              "src": "3333:5:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3562,
                                "name": "ids",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3534,
                                "src": "3340:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3564,
                              "indexExpression": {
                                "id": 3563,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3550,
                                "src": "3344:1:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3340:6:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 3565,
                                "name": "values",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3537,
                                "src": "3348:6:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3567,
                              "indexExpression": {
                                "id": 3566,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3550,
                                "src": "3355:1:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3348:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3560,
                            "name": "_doBurn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3655,
                            "src": "3325:7:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3325:33:7",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3569,
                        "nodeType": "ExpressionStatement",
                        "src": "3325:33:7"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3553,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3550,
                      "src": "3290:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3554,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3534,
                        "src": "3294:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 3555,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3294:10:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3290:14:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3571,
                  "initializationExpression": {
                    "assignments": [
                      3550
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3550,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3571,
                        "src": "3278:6:7",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3549,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3278:4:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3552,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3551,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3287:1:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3278:10:7"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3558,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3306:3:7",
                      "subExpression": {
                        "id": 3557,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3550,
                        "src": "3306:1:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3559,
                    "nodeType": "ExpressionStatement",
                    "src": "3306:3:7"
                  },
                  "nodeType": "ForStatement",
                  "src": "3274:95:7"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 3573,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "3398:3:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 3574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "3398:10:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3575,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3531,
                        "src": "3410:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3578,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3425:1:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 3577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3417:7:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3576,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3417:7:7",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3579,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3417:10:7",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3580,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3534,
                        "src": "3429:3:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 3581,
                        "name": "values",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3537,
                        "src": "3434:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      ],
                      "id": 3572,
                      "name": "TransferBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4702,
                      "src": "3384:13:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                      }
                    },
                    "id": 3582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3384:57:7",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3583,
                  "nodeType": "EmitStatement",
                  "src": "3379:62:7"
                }
              ]
            },
            "documentation": {
              "id": 3529,
              "nodeType": "StructuredDocumentation",
              "src": "2930:141:7",
              "text": "Burn zero or more tokens.\n @param owner Whose tokens to burn.\n @param ids Token IDs.\n @param values Amounts to mint."
            },
            "id": 3585,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_batchBurn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3531,
                  "mutability": "mutable",
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 3585,
                  "src": "3096:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3530,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3096:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3534,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 3585,
                  "src": "3111:20:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3532,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3111:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3533,
                    "nodeType": "ArrayTypeName",
                    "src": "3111:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3537,
                  "mutability": "mutable",
                  "name": "values",
                  "nodeType": "VariableDeclaration",
                  "scope": 3585,
                  "src": "3133:23:7",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3535,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3133:7:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3536,
                    "nodeType": "ArrayTypeName",
                    "src": "3133:9:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3095:62:7"
            },
            "returnParameters": {
              "id": 3539,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3167:0:7"
            },
            "scope": 3656,
            "src": "3076:372:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3619,
              "nodeType": "Block",
              "src": "3518:186:7",
              "statements": [
                {
                  "expression": {
                    "id": 3603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3594,
                        "name": "totalBalances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3338,
                        "src": "3528:13:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3596,
                      "indexExpression": {
                        "id": 3595,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3589,
                        "src": "3542:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3528:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 3601,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3591,
                          "src": "3570:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "baseExpression": {
                            "id": 3597,
                            "name": "totalBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3338,
                            "src": "3548:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 3599,
                          "indexExpression": {
                            "id": 3598,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3589,
                            "src": "3562:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3548:17:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3600,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4422,
                        "src": "3548:21:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 3602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3548:28:7",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3528:48:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3604,
                  "nodeType": "ExpressionStatement",
                  "src": "3528:48:7"
                },
                {
                  "expression": {
                    "id": 3617,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 3605,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2305,
                          "src": "3586:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 3608,
                        "indexExpression": {
                          "id": 3606,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3589,
                          "src": "3596:2:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3586:13:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3609,
                      "indexExpression": {
                        "id": 3607,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3587,
                        "src": "3600:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3586:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3616,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "baseExpression": {
                          "baseExpression": {
                            "id": 3610,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2305,
                            "src": "3606:9:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                              "typeString": "mapping(uint256 => mapping(address => uint256))"
                            }
                          },
                          "id": 3612,
                          "indexExpression": {
                            "id": 3611,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3589,
                            "src": "3616:2:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3606:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 3614,
                        "indexExpression": {
                          "id": 3613,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3587,
                          "src": "3620:2:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3606:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "id": 3615,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3591,
                        "src": "3626:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3606:25:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3586:45:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3618,
                  "nodeType": "ExpressionStatement",
                  "src": "3586:45:7"
                }
              ]
            },
            "id": 3620,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doMint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3587,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 3620,
                  "src": "3471:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3586,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3471:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3589,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3620,
                  "src": "3483:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3588,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3483:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3591,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 3620,
                  "src": "3495:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3590,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3495:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3470:39:7"
            },
            "returnParameters": {
              "id": 3593,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3518:0:7"
            },
            "scope": 3656,
            "src": "3454:250:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 3654,
              "nodeType": "Block",
              "src": "3776:190:7",
              "statements": [
                {
                  "expression": {
                    "id": 3642,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 3629,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2305,
                          "src": "3786:9:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 3632,
                        "indexExpression": {
                          "id": 3630,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3624,
                          "src": "3796:2:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3786:13:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 3633,
                      "indexExpression": {
                        "id": 3631,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3622,
                        "src": "3800:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3786:19:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 3640,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3626,
                          "src": "3832:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 3634,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2305,
                              "src": "3808:9:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 3636,
                            "indexExpression": {
                              "id": 3635,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3624,
                              "src": "3818:2:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3808:13:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3638,
                          "indexExpression": {
                            "id": 3637,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3622,
                            "src": "3822:4:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3808:19:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4439,
                        "src": "3808:23:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 3641,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3808:30:7",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3786:52:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3643,
                  "nodeType": "ExpressionStatement",
                  "src": "3786:52:7"
                },
                {
                  "expression": {
                    "id": 3652,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3644,
                        "name": "totalBalances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3338,
                        "src": "3848:13:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 3646,
                      "indexExpression": {
                        "id": 3645,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3624,
                        "src": "3862:2:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3848:17:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 3651,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "baseExpression": {
                          "id": 3647,
                          "name": "totalBalances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3338,
                          "src": "3868:13:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                            "typeString": "mapping(uint256 => uint256)"
                          }
                        },
                        "id": 3649,
                        "indexExpression": {
                          "id": 3648,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3624,
                          "src": "3882:2:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3868:17:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "id": 3650,
                        "name": "value",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3626,
                        "src": "3888:5:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3868:25:7",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3848:45:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3653,
                  "nodeType": "ExpressionStatement",
                  "src": "3848:45:7"
                }
              ]
            },
            "id": 3655,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doBurn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3622,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3655,
                  "src": "3727:12:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3621,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3727:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3624,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3655,
                  "src": "3741:10:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3623,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3741:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3626,
                  "mutability": "mutable",
                  "name": "value",
                  "nodeType": "VariableDeclaration",
                  "scope": 3655,
                  "src": "3753:13:7",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3625,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3753:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3726:41:7"
            },
            "returnParameters": {
              "id": 3628,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3776:0:7"
            },
            "scope": 3656,
            "src": "3710:256:7",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 3657,
        "src": "244:3724:7"
      }
    ],
    "src": "46:3922:7"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155WithTotals.sol",
      "exportedSymbols": {
        "ERC1155": [
          3296
        ],
        "ERC1155WithTotals": [
          3656
        ],
        "SafeMath": [
          4589
        ]
      },
      "license": "LGPL-3.0-or-later"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".1"
          ]
        },
        "id": 3325,
        "name": "PragmaDirective",
        "src": "46:23:7"
      },
      {
        "attributes": {
          "SourceUnit": 4590,
          "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
          "file": "@openzeppelin/contracts/math/SafeMath.sol",
          "scope": 3657,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 3326,
        "name": "ImportDirective",
        "src": "70:51:7"
      },
      {
        "attributes": {
          "SourceUnit": 3297,
          "absolutePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol",
          "file": "./ERC1155.sol",
          "scope": 3657,
          "symbolAliases": [
            {
              "foreign": {
                "attributes": {
                  "overloadedDeclarations": [
                    null
                  ],
                  "value": "ERC1155"
                },
                "id": 3327,
                "name": "Identifier",
                "src": "131:7:7"
              }
            }
          ],
          "unitAlias": ""
        },
        "id": 3328,
        "name": "ImportDirective",
        "src": "122:40:7"
      },
      {
        "attributes": {
          "abstract": true,
          "contractDependencies": [
            3296,
            4324,
            4381,
            4393,
            4790,
            4805
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3656,
            3296,
            4805,
            4790,
            4381,
            4393,
            4324
          ],
          "name": "ERC1155WithTotals",
          "scope": 3657
        },
        "children": [
          {
            "attributes": {
              "text": "@title A base contract for an ERC-1155 contract with calculation of totals."
            },
            "id": 3329,
            "name": "StructuredDocumentation",
            "src": "164:80:7"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "ERC1155",
                  "referencedDeclaration": 3296,
                  "type": "contract ERC1155"
                },
                "id": 3330,
                "name": "UserDefinedTypeName",
                "src": "283:7:7"
              }
            ],
            "id": 3331,
            "name": "InheritanceSpecifier",
            "src": "283:7:7"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeMath",
                  "referencedDeclaration": 4589,
                  "type": "library SafeMath"
                },
                "id": 3332,
                "name": "UserDefinedTypeName",
                "src": "303:8:7"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 3333,
                "name": "ElementaryTypeName",
                "src": "316:7:7"
              }
            ],
            "id": 3334,
            "name": "UsingForDirective",
            "src": "297:27:7"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "totalBalances",
              "scope": 3656,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint256 => uint256)",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint256 => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 3335,
                    "name": "ElementaryTypeName",
                    "src": "371:7:7"
                  },
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 3336,
                    "name": "ElementaryTypeName",
                    "src": "382:7:7"
                  }
                ],
                "id": 3337,
                "name": "Mapping",
                "src": "363:27:7"
              }
            ],
            "id": 3338,
            "name": "VariableDeclaration",
            "src": "363:49:7"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 3656,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Construct a token contract with given description URI.\n @param uri_ Description URI."
                },
                "id": 3339,
                "name": "StructuredDocumentation",
                "src": "419:95:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "uri_",
                      "scope": 3348,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 3340,
                        "name": "ElementaryTypeName",
                        "src": "532:6:7"
                      }
                    ],
                    "id": 3341,
                    "name": "VariableDeclaration",
                    "src": "532:18:7"
                  }
                ],
                "id": 3342,
                "name": "ParameterList",
                "src": "531:20:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3346,
                "name": "ParameterList",
                "src": "566:0:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3296,
                      "type": "type(contract ERC1155)",
                      "value": "ERC1155"
                    },
                    "id": 3343,
                    "name": "Identifier",
                    "src": "552:7:7"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 3341,
                      "type": "string memory",
                      "value": "uri_"
                    },
                    "id": 3344,
                    "name": "Identifier",
                    "src": "560:4:7"
                  }
                ],
                "id": 3345,
                "name": "ModifierInvocation",
                "src": "552:13:7"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 3347,
                "name": "Block",
                "src": "566:3:7"
              }
            ],
            "id": 3348,
            "name": "FunctionDefinition",
            "src": "519:50:7"
          },
          {
            "attributes": {
              "functionSelector": "bd85b039",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "totalSupply",
              "scope": 3656,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "Total supply of a token (conforms to `IERC1155Views`).\n @param id Token ID.\n @return Total supply."
                },
                "id": 3349,
                "name": "StructuredDocumentation",
                "src": "1119:116:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 3361,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3350,
                        "name": "ElementaryTypeName",
                        "src": "1261:7:7"
                      }
                    ],
                    "id": 3351,
                    "name": "VariableDeclaration",
                    "src": "1261:10:7"
                  }
                ],
                "id": 3352,
                "name": "ParameterList",
                "src": "1260:12:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3361,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3353,
                        "name": "ElementaryTypeName",
                        "src": "1294:7:7"
                      }
                    ],
                    "id": 3354,
                    "name": "VariableDeclaration",
                    "src": "1294:7:7"
                  }
                ],
                "id": 3355,
                "name": "ParameterList",
                "src": "1293:9:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3355
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3338,
                              "type": "mapping(uint256 => uint256)",
                              "value": "totalBalances"
                            },
                            "id": 3356,
                            "name": "Identifier",
                            "src": "1320:13:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3351,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 3357,
                            "name": "Identifier",
                            "src": "1334:2:7"
                          }
                        ],
                        "id": 3358,
                        "name": "IndexAccess",
                        "src": "1320:17:7"
                      }
                    ],
                    "id": 3359,
                    "name": "Return",
                    "src": "1313:24:7"
                  }
                ],
                "id": 3360,
                "name": "Block",
                "src": "1303:41:7"
              }
            ],
            "id": 3361,
            "name": "FunctionDefinition",
            "src": "1240:104:7"
          },
          {
            "attributes": {
              "baseFunctions": [
                2844
              ],
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_mint",
              "scope": 3656,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Mint a token.\n @param to Whom to mint to.\n @param id Token ID.\n @param value Amount to mint.\n @param data Additional data."
                },
                "id": 3362,
                "name": "StructuredDocumentation",
                "src": "1350:154:7"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 3372,
                "name": "OverrideSpecifier",
                "src": "1591:8:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 3416,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3363,
                        "name": "ElementaryTypeName",
                        "src": "1524:7:7"
                      }
                    ],
                    "id": 3364,
                    "name": "VariableDeclaration",
                    "src": "1524:10:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 3416,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3365,
                        "name": "ElementaryTypeName",
                        "src": "1536:7:7"
                      }
                    ],
                    "id": 3366,
                    "name": "VariableDeclaration",
                    "src": "1536:10:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "scope": 3416,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3367,
                        "name": "ElementaryTypeName",
                        "src": "1548:7:7"
                      }
                    ],
                    "id": 3368,
                    "name": "VariableDeclaration",
                    "src": "1548:13:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 3416,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3369,
                        "name": "ElementaryTypeName",
                        "src": "1563:5:7"
                      }
                    ],
                    "id": 3370,
                    "name": "VariableDeclaration",
                    "src": "1563:17:7"
                  }
                ],
                "id": 3371,
                "name": "ParameterList",
                "src": "1523:58:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3373,
                "name": "ParameterList",
                "src": "1600:0:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2",
                                  "typeString": "literal_string \"ERC1155: mint to the zero address\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 3374,
                            "name": "Identifier",
                            "src": "1610:7:7"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3364,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 3375,
                                "name": "Identifier",
                                "src": "1618:2:7"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 3376,
                                        "name": "ElementaryTypeName",
                                        "src": "1624:7:7"
                                      }
                                    ],
                                    "id": 3377,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1624:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 3378,
                                    "name": "Literal",
                                    "src": "1632:1:7"
                                  }
                                ],
                                "id": 3379,
                                "name": "FunctionCall",
                                "src": "1624:10:7"
                              }
                            ],
                            "id": 3380,
                            "name": "BinaryOperation",
                            "src": "1618:16:7"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: mint to the zero address\"",
                              "value": "ERC1155: mint to the zero address"
                            },
                            "id": 3381,
                            "name": "Literal",
                            "src": "1636:35:7"
                          }
                        ],
                        "id": 3382,
                        "name": "FunctionCall",
                        "src": "1610:62:7"
                      }
                    ],
                    "id": 3383,
                    "name": "ExpressionStatement",
                    "src": "1610:62:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3620,
                              "type": "function (address,uint256,uint256)",
                              "value": "_doMint"
                            },
                            "id": 3384,
                            "name": "Identifier",
                            "src": "1683:7:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3364,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 3385,
                            "name": "Identifier",
                            "src": "1691:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3366,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 3386,
                            "name": "Identifier",
                            "src": "1695:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3368,
                              "type": "uint256",
                              "value": "value"
                            },
                            "id": 3387,
                            "name": "Identifier",
                            "src": "1699:5:7"
                          }
                        ],
                        "id": 3388,
                        "name": "FunctionCall",
                        "src": "1683:22:7"
                      }
                    ],
                    "id": 3389,
                    "name": "ExpressionStatement",
                    "src": "1683:22:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4687,
                              "type": "function (address,address,address,uint256,uint256)",
                              "value": "TransferSingle"
                            },
                            "id": 3390,
                            "name": "Identifier",
                            "src": "1720:14:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3391,
                                "name": "Identifier",
                                "src": "1735:3:7"
                              }
                            ],
                            "id": 3392,
                            "name": "MemberAccess",
                            "src": "1735:10:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3393,
                                    "name": "ElementaryTypeName",
                                    "src": "1747:7:7"
                                  }
                                ],
                                "id": 3394,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1747:7:7"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3395,
                                "name": "Literal",
                                "src": "1755:1:7"
                              }
                            ],
                            "id": 3396,
                            "name": "FunctionCall",
                            "src": "1747:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3364,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 3397,
                            "name": "Identifier",
                            "src": "1759:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3366,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 3398,
                            "name": "Identifier",
                            "src": "1763:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3368,
                              "type": "uint256",
                              "value": "value"
                            },
                            "id": 3399,
                            "name": "Identifier",
                            "src": "1767:5:7"
                          }
                        ],
                        "id": 3400,
                        "name": "FunctionCall",
                        "src": "1720:53:7"
                      }
                    ],
                    "id": 3401,
                    "name": "EmitStatement",
                    "src": "1715:58:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3200,
                              "type": "function (address,address,address,uint256,uint256,bytes memory)",
                              "value": "_doSafeTransferAcceptanceCheck"
                            },
                            "id": 3402,
                            "name": "Identifier",
                            "src": "1784:30:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3403,
                                "name": "Identifier",
                                "src": "1815:3:7"
                              }
                            ],
                            "id": 3404,
                            "name": "MemberAccess",
                            "src": "1815:10:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3405,
                                    "name": "ElementaryTypeName",
                                    "src": "1827:7:7"
                                  }
                                ],
                                "id": 3406,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1827:7:7"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3407,
                                "name": "Literal",
                                "src": "1835:1:7"
                              }
                            ],
                            "id": 3408,
                            "name": "FunctionCall",
                            "src": "1827:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3364,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 3409,
                            "name": "Identifier",
                            "src": "1839:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3366,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 3410,
                            "name": "Identifier",
                            "src": "1843:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3368,
                              "type": "uint256",
                              "value": "value"
                            },
                            "id": 3411,
                            "name": "Identifier",
                            "src": "1847:5:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3370,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 3412,
                            "name": "Identifier",
                            "src": "1854:4:7"
                          }
                        ],
                        "id": 3413,
                        "name": "FunctionCall",
                        "src": "1784:75:7"
                      }
                    ],
                    "id": 3414,
                    "name": "ExpressionStatement",
                    "src": "1784:75:7"
                  }
                ],
                "id": 3415,
                "name": "Block",
                "src": "1600:266:7"
              }
            ],
            "id": 3416,
            "name": "FunctionDefinition",
            "src": "1509:357:7"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_batchMint",
              "scope": 3656,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Mint zero or more tokens.\n @param to Whom to mint to.\n @param ids Token IDs.\n @param values Amounts to mint.\n @param data Additional data."
                },
                "id": 3417,
                "name": "StructuredDocumentation",
                "src": "1872:170:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 3498,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3418,
                        "name": "ElementaryTypeName",
                        "src": "2067:7:7"
                      }
                    ],
                    "id": 3419,
                    "name": "VariableDeclaration",
                    "src": "2067:10:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "scope": 3498,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3420,
                            "name": "ElementaryTypeName",
                            "src": "2079:7:7"
                          }
                        ],
                        "id": 3421,
                        "name": "ArrayTypeName",
                        "src": "2079:9:7"
                      }
                    ],
                    "id": 3422,
                    "name": "VariableDeclaration",
                    "src": "2079:20:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "values",
                      "scope": 3498,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3423,
                            "name": "ElementaryTypeName",
                            "src": "2101:7:7"
                          }
                        ],
                        "id": 3424,
                        "name": "ArrayTypeName",
                        "src": "2101:9:7"
                      }
                    ],
                    "id": 3425,
                    "name": "VariableDeclaration",
                    "src": "2101:23:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 3498,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3426,
                        "name": "ElementaryTypeName",
                        "src": "2126:5:7"
                      }
                    ],
                    "id": 3427,
                    "name": "VariableDeclaration",
                    "src": "2126:17:7"
                  }
                ],
                "id": 3428,
                "name": "ParameterList",
                "src": "2066:78:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3429,
                "name": "ParameterList",
                "src": "2154:0:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_e3adb1c77f070d4645b892eb1dd5fdd83aa3b285867ef785899841af41a4878b",
                                  "typeString": "literal_string \"ERC1155: batch mint to the zero address\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 3430,
                            "name": "Identifier",
                            "src": "2164:7:7"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3419,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 3431,
                                "name": "Identifier",
                                "src": "2172:2:7"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 3432,
                                        "name": "ElementaryTypeName",
                                        "src": "2178:7:7"
                                      }
                                    ],
                                    "id": 3433,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2178:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 3434,
                                    "name": "Literal",
                                    "src": "2186:1:7"
                                  }
                                ],
                                "id": 3435,
                                "name": "FunctionCall",
                                "src": "2178:10:7"
                              }
                            ],
                            "id": 3436,
                            "name": "BinaryOperation",
                            "src": "2172:16:7"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a206261746368206d696e7420746f20746865207a65726f2061646472657373",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: batch mint to the zero address\"",
                              "value": "ERC1155: batch mint to the zero address"
                            },
                            "id": 3437,
                            "name": "Literal",
                            "src": "2190:41:7"
                          }
                        ],
                        "id": 3438,
                        "name": "FunctionCall",
                        "src": "2164:68:7"
                      }
                    ],
                    "id": 3439,
                    "name": "ExpressionStatement",
                    "src": "2164:68:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_b7106002d40c7c2d33830b8d37d9874e7c6eeffd05a570b1dbecab6fef07813e",
                                  "typeString": "literal_string \"ERC1155: IDs and values must have same lengths\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 3440,
                            "name": "Identifier",
                            "src": "2242:7:7"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3422,
                                      "type": "uint256[] memory",
                                      "value": "ids"
                                    },
                                    "id": 3441,
                                    "name": "Identifier",
                                    "src": "2250:3:7"
                                  }
                                ],
                                "id": 3442,
                                "name": "MemberAccess",
                                "src": "2250:10:7"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3425,
                                      "type": "uint256[] memory",
                                      "value": "values"
                                    },
                                    "id": 3443,
                                    "name": "Identifier",
                                    "src": "2264:6:7"
                                  }
                                ],
                                "id": 3444,
                                "name": "MemberAccess",
                                "src": "2264:13:7"
                              }
                            ],
                            "id": 3445,
                            "name": "BinaryOperation",
                            "src": "2250:27:7"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2049447320616e642076616c756573206d75737420686176652073616d65206c656e67746873",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: IDs and values must have same lengths\"",
                              "value": "ERC1155: IDs and values must have same lengths"
                            },
                            "id": 3446,
                            "name": "Literal",
                            "src": "2279:48:7"
                          }
                        ],
                        "id": 3447,
                        "name": "FunctionCall",
                        "src": "2242:86:7"
                      }
                    ],
                    "id": 3448,
                    "name": "ExpressionStatement",
                    "src": "2242:86:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            3450
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 3471,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 3449,
                                "name": "ElementaryTypeName",
                                "src": "2343:4:7"
                              }
                            ],
                            "id": 3450,
                            "name": "VariableDeclaration",
                            "src": "2343:6:7"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3451,
                            "name": "Literal",
                            "src": "2352:1:7"
                          }
                        ],
                        "id": 3452,
                        "name": "VariableDeclarationStatement",
                        "src": "2343:10:7"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3450,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 3453,
                            "name": "Identifier",
                            "src": "2355:1:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3422,
                                  "type": "uint256[] memory",
                                  "value": "ids"
                                },
                                "id": 3454,
                                "name": "Identifier",
                                "src": "2359:3:7"
                              }
                            ],
                            "id": 3455,
                            "name": "MemberAccess",
                            "src": "2359:10:7"
                          }
                        ],
                        "id": 3456,
                        "name": "BinaryOperation",
                        "src": "2355:14:7"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3450,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 3457,
                                "name": "Identifier",
                                "src": "2371:1:7"
                              }
                            ],
                            "id": 3458,
                            "name": "UnaryOperation",
                            "src": "2371:3:7"
                          }
                        ],
                        "id": 3459,
                        "name": "ExpressionStatement",
                        "src": "2371:3:7"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3620,
                                      "type": "function (address,uint256,uint256)",
                                      "value": "_doMint"
                                    },
                                    "id": 3460,
                                    "name": "Identifier",
                                    "src": "2390:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3419,
                                      "type": "address",
                                      "value": "to"
                                    },
                                    "id": 3461,
                                    "name": "Identifier",
                                    "src": "2398:2:7"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3422,
                                          "type": "uint256[] memory",
                                          "value": "ids"
                                        },
                                        "id": 3462,
                                        "name": "Identifier",
                                        "src": "2402:3:7"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3450,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 3463,
                                        "name": "Identifier",
                                        "src": "2406:1:7"
                                      }
                                    ],
                                    "id": 3464,
                                    "name": "IndexAccess",
                                    "src": "2402:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3425,
                                          "type": "uint256[] memory",
                                          "value": "values"
                                        },
                                        "id": 3465,
                                        "name": "Identifier",
                                        "src": "2410:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3450,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 3466,
                                        "name": "Identifier",
                                        "src": "2417:1:7"
                                      }
                                    ],
                                    "id": 3467,
                                    "name": "IndexAccess",
                                    "src": "2410:9:7"
                                  }
                                ],
                                "id": 3468,
                                "name": "FunctionCall",
                                "src": "2390:30:7"
                              }
                            ],
                            "id": 3469,
                            "name": "ExpressionStatement",
                            "src": "2390:30:7"
                          }
                        ],
                        "id": 3470,
                        "name": "Block",
                        "src": "2376:55:7"
                      }
                    ],
                    "id": 3471,
                    "name": "ForStatement",
                    "src": "2339:92:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4702,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory)",
                              "value": "TransferBatch"
                            },
                            "id": 3472,
                            "name": "Identifier",
                            "src": "2446:13:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3473,
                                "name": "Identifier",
                                "src": "2460:3:7"
                              }
                            ],
                            "id": 3474,
                            "name": "MemberAccess",
                            "src": "2460:10:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3475,
                                    "name": "ElementaryTypeName",
                                    "src": "2472:7:7"
                                  }
                                ],
                                "id": 3476,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2472:7:7"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3477,
                                "name": "Literal",
                                "src": "2480:1:7"
                              }
                            ],
                            "id": 3478,
                            "name": "FunctionCall",
                            "src": "2472:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3419,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 3479,
                            "name": "Identifier",
                            "src": "2484:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3422,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 3480,
                            "name": "Identifier",
                            "src": "2488:3:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3425,
                              "type": "uint256[] memory",
                              "value": "values"
                            },
                            "id": 3481,
                            "name": "Identifier",
                            "src": "2493:6:7"
                          }
                        ],
                        "id": 3482,
                        "name": "FunctionCall",
                        "src": "2446:54:7"
                      }
                    ],
                    "id": 3483,
                    "name": "EmitStatement",
                    "src": "2441:59:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3267,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_doSafeBatchTransferAcceptanceCheck"
                            },
                            "id": 3484,
                            "name": "Identifier",
                            "src": "2511:35:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3485,
                                "name": "Identifier",
                                "src": "2547:3:7"
                              }
                            ],
                            "id": 3486,
                            "name": "MemberAccess",
                            "src": "2547:10:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3487,
                                    "name": "ElementaryTypeName",
                                    "src": "2559:7:7"
                                  }
                                ],
                                "id": 3488,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2559:7:7"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3489,
                                "name": "Literal",
                                "src": "2567:1:7"
                              }
                            ],
                            "id": 3490,
                            "name": "FunctionCall",
                            "src": "2559:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3419,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 3491,
                            "name": "Identifier",
                            "src": "2571:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3422,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 3492,
                            "name": "Identifier",
                            "src": "2575:3:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3425,
                              "type": "uint256[] memory",
                              "value": "values"
                            },
                            "id": 3493,
                            "name": "Identifier",
                            "src": "2580:6:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3427,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 3494,
                            "name": "Identifier",
                            "src": "2588:4:7"
                          }
                        ],
                        "id": 3495,
                        "name": "FunctionCall",
                        "src": "2511:82:7"
                      }
                    ],
                    "id": 3496,
                    "name": "ExpressionStatement",
                    "src": "2511:82:7"
                  }
                ],
                "id": 3497,
                "name": "Block",
                "src": "2154:446:7"
              }
            ],
            "id": 3498,
            "name": "FunctionDefinition",
            "src": "2047:553:7"
          },
          {
            "attributes": {
              "baseFunctions": [
                3021
              ],
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_burn",
              "scope": 3656,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Burn a token.\n @param owner Whose tokens to burn.\n @param id Token ID.\n @param value Amount to mint."
                },
                "id": 3499,
                "name": "StructuredDocumentation",
                "src": "2606:125:7"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 3507,
                "name": "OverrideSpecifier",
                "src": "2802:8:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "owner",
                      "scope": 3528,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3500,
                        "name": "ElementaryTypeName",
                        "src": "2751:7:7"
                      }
                    ],
                    "id": 3501,
                    "name": "VariableDeclaration",
                    "src": "2751:13:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 3528,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3502,
                        "name": "ElementaryTypeName",
                        "src": "2766:7:7"
                      }
                    ],
                    "id": 3503,
                    "name": "VariableDeclaration",
                    "src": "2766:10:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "scope": 3528,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3504,
                        "name": "ElementaryTypeName",
                        "src": "2778:7:7"
                      }
                    ],
                    "id": 3505,
                    "name": "VariableDeclaration",
                    "src": "2778:13:7"
                  }
                ],
                "id": 3506,
                "name": "ParameterList",
                "src": "2750:42:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3508,
                "name": "ParameterList",
                "src": "2811:0:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3655,
                              "type": "function (address,uint256,uint256)",
                              "value": "_doBurn"
                            },
                            "id": 3509,
                            "name": "Identifier",
                            "src": "2821:7:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3501,
                              "type": "address",
                              "value": "owner"
                            },
                            "id": 3510,
                            "name": "Identifier",
                            "src": "2829:5:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3503,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 3511,
                            "name": "Identifier",
                            "src": "2836:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3505,
                              "type": "uint256",
                              "value": "value"
                            },
                            "id": 3512,
                            "name": "Identifier",
                            "src": "2840:5:7"
                          }
                        ],
                        "id": 3513,
                        "name": "FunctionCall",
                        "src": "2821:25:7"
                      }
                    ],
                    "id": 3514,
                    "name": "ExpressionStatement",
                    "src": "2821:25:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4687,
                              "type": "function (address,address,address,uint256,uint256)",
                              "value": "TransferSingle"
                            },
                            "id": 3515,
                            "name": "Identifier",
                            "src": "2861:14:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3516,
                                "name": "Identifier",
                                "src": "2876:3:7"
                              }
                            ],
                            "id": 3517,
                            "name": "MemberAccess",
                            "src": "2876:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3501,
                              "type": "address",
                              "value": "owner"
                            },
                            "id": 3518,
                            "name": "Identifier",
                            "src": "2888:5:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3519,
                                    "name": "ElementaryTypeName",
                                    "src": "2895:7:7"
                                  }
                                ],
                                "id": 3520,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2895:7:7"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3521,
                                "name": "Literal",
                                "src": "2903:1:7"
                              }
                            ],
                            "id": 3522,
                            "name": "FunctionCall",
                            "src": "2895:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3503,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 3523,
                            "name": "Identifier",
                            "src": "2907:2:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3505,
                              "type": "uint256",
                              "value": "value"
                            },
                            "id": 3524,
                            "name": "Identifier",
                            "src": "2911:5:7"
                          }
                        ],
                        "id": 3525,
                        "name": "FunctionCall",
                        "src": "2861:56:7"
                      }
                    ],
                    "id": 3526,
                    "name": "EmitStatement",
                    "src": "2856:61:7"
                  }
                ],
                "id": 3527,
                "name": "Block",
                "src": "2811:113:7"
              }
            ],
            "id": 3528,
            "name": "FunctionDefinition",
            "src": "2736:188:7"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_batchBurn",
              "scope": 3656,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": "Burn zero or more tokens.\n @param owner Whose tokens to burn.\n @param ids Token IDs.\n @param values Amounts to mint."
                },
                "id": 3529,
                "name": "StructuredDocumentation",
                "src": "2930:141:7"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "owner",
                      "scope": 3585,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3530,
                        "name": "ElementaryTypeName",
                        "src": "3096:7:7"
                      }
                    ],
                    "id": 3531,
                    "name": "VariableDeclaration",
                    "src": "3096:13:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "scope": 3585,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3532,
                            "name": "ElementaryTypeName",
                            "src": "3111:7:7"
                          }
                        ],
                        "id": 3533,
                        "name": "ArrayTypeName",
                        "src": "3111:9:7"
                      }
                    ],
                    "id": 3534,
                    "name": "VariableDeclaration",
                    "src": "3111:20:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "values",
                      "scope": 3585,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3535,
                            "name": "ElementaryTypeName",
                            "src": "3133:7:7"
                          }
                        ],
                        "id": 3536,
                        "name": "ArrayTypeName",
                        "src": "3133:9:7"
                      }
                    ],
                    "id": 3537,
                    "name": "VariableDeclaration",
                    "src": "3133:23:7"
                  }
                ],
                "id": 3538,
                "name": "ParameterList",
                "src": "3095:62:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3539,
                "name": "ParameterList",
                "src": "3167:0:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_b7106002d40c7c2d33830b8d37d9874e7c6eeffd05a570b1dbecab6fef07813e",
                                  "typeString": "literal_string \"ERC1155: IDs and values must have same lengths\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 3540,
                            "name": "Identifier",
                            "src": "3177:7:7"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3534,
                                      "type": "uint256[] memory",
                                      "value": "ids"
                                    },
                                    "id": 3541,
                                    "name": "Identifier",
                                    "src": "3185:3:7"
                                  }
                                ],
                                "id": 3542,
                                "name": "MemberAccess",
                                "src": "3185:10:7"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3537,
                                      "type": "uint256[] memory",
                                      "value": "values"
                                    },
                                    "id": 3543,
                                    "name": "Identifier",
                                    "src": "3199:6:7"
                                  }
                                ],
                                "id": 3544,
                                "name": "MemberAccess",
                                "src": "3199:13:7"
                              }
                            ],
                            "id": 3545,
                            "name": "BinaryOperation",
                            "src": "3185:27:7"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2049447320616e642076616c756573206d75737420686176652073616d65206c656e67746873",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: IDs and values must have same lengths\"",
                              "value": "ERC1155: IDs and values must have same lengths"
                            },
                            "id": 3546,
                            "name": "Literal",
                            "src": "3214:48:7"
                          }
                        ],
                        "id": 3547,
                        "name": "FunctionCall",
                        "src": "3177:86:7"
                      }
                    ],
                    "id": 3548,
                    "name": "ExpressionStatement",
                    "src": "3177:86:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            3550
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 3571,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 3549,
                                "name": "ElementaryTypeName",
                                "src": "3278:4:7"
                              }
                            ],
                            "id": 3550,
                            "name": "VariableDeclaration",
                            "src": "3278:6:7"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3551,
                            "name": "Literal",
                            "src": "3287:1:7"
                          }
                        ],
                        "id": 3552,
                        "name": "VariableDeclarationStatement",
                        "src": "3278:10:7"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3550,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 3553,
                            "name": "Identifier",
                            "src": "3290:1:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3534,
                                  "type": "uint256[] memory",
                                  "value": "ids"
                                },
                                "id": 3554,
                                "name": "Identifier",
                                "src": "3294:3:7"
                              }
                            ],
                            "id": 3555,
                            "name": "MemberAccess",
                            "src": "3294:10:7"
                          }
                        ],
                        "id": 3556,
                        "name": "BinaryOperation",
                        "src": "3290:14:7"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3550,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 3557,
                                "name": "Identifier",
                                "src": "3306:1:7"
                              }
                            ],
                            "id": 3558,
                            "name": "UnaryOperation",
                            "src": "3306:3:7"
                          }
                        ],
                        "id": 3559,
                        "name": "ExpressionStatement",
                        "src": "3306:3:7"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3655,
                                      "type": "function (address,uint256,uint256)",
                                      "value": "_doBurn"
                                    },
                                    "id": 3560,
                                    "name": "Identifier",
                                    "src": "3325:7:7"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3531,
                                      "type": "address",
                                      "value": "owner"
                                    },
                                    "id": 3561,
                                    "name": "Identifier",
                                    "src": "3333:5:7"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3534,
                                          "type": "uint256[] memory",
                                          "value": "ids"
                                        },
                                        "id": 3562,
                                        "name": "Identifier",
                                        "src": "3340:3:7"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3550,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 3563,
                                        "name": "Identifier",
                                        "src": "3344:1:7"
                                      }
                                    ],
                                    "id": 3564,
                                    "name": "IndexAccess",
                                    "src": "3340:6:7"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3537,
                                          "type": "uint256[] memory",
                                          "value": "values"
                                        },
                                        "id": 3565,
                                        "name": "Identifier",
                                        "src": "3348:6:7"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3550,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 3566,
                                        "name": "Identifier",
                                        "src": "3355:1:7"
                                      }
                                    ],
                                    "id": 3567,
                                    "name": "IndexAccess",
                                    "src": "3348:9:7"
                                  }
                                ],
                                "id": 3568,
                                "name": "FunctionCall",
                                "src": "3325:33:7"
                              }
                            ],
                            "id": 3569,
                            "name": "ExpressionStatement",
                            "src": "3325:33:7"
                          }
                        ],
                        "id": 3570,
                        "name": "Block",
                        "src": "3311:58:7"
                      }
                    ],
                    "id": 3571,
                    "name": "ForStatement",
                    "src": "3274:95:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4702,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory)",
                              "value": "TransferBatch"
                            },
                            "id": 3572,
                            "name": "Identifier",
                            "src": "3384:13:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4294967281,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 3573,
                                "name": "Identifier",
                                "src": "3398:3:7"
                              }
                            ],
                            "id": 3574,
                            "name": "MemberAccess",
                            "src": "3398:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3531,
                              "type": "address",
                              "value": "owner"
                            },
                            "id": 3575,
                            "name": "Identifier",
                            "src": "3410:5:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3576,
                                    "name": "ElementaryTypeName",
                                    "src": "3417:7:7"
                                  }
                                ],
                                "id": 3577,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3417:7:7"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3578,
                                "name": "Literal",
                                "src": "3425:1:7"
                              }
                            ],
                            "id": 3579,
                            "name": "FunctionCall",
                            "src": "3417:10:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3534,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 3580,
                            "name": "Identifier",
                            "src": "3429:3:7"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3537,
                              "type": "uint256[] memory",
                              "value": "values"
                            },
                            "id": 3581,
                            "name": "Identifier",
                            "src": "3434:6:7"
                          }
                        ],
                        "id": 3582,
                        "name": "FunctionCall",
                        "src": "3384:57:7"
                      }
                    ],
                    "id": 3583,
                    "name": "EmitStatement",
                    "src": "3379:62:7"
                  }
                ],
                "id": 3584,
                "name": "Block",
                "src": "3167:281:7"
              }
            ],
            "id": 3585,
            "name": "FunctionDefinition",
            "src": "3076:372:7"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_doMint",
              "scope": 3656,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 3620,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3586,
                        "name": "ElementaryTypeName",
                        "src": "3471:7:7"
                      }
                    ],
                    "id": 3587,
                    "name": "VariableDeclaration",
                    "src": "3471:10:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 3620,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3588,
                        "name": "ElementaryTypeName",
                        "src": "3483:7:7"
                      }
                    ],
                    "id": 3589,
                    "name": "VariableDeclaration",
                    "src": "3483:10:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "scope": 3620,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3590,
                        "name": "ElementaryTypeName",
                        "src": "3495:7:7"
                      }
                    ],
                    "id": 3591,
                    "name": "VariableDeclaration",
                    "src": "3495:13:7"
                  }
                ],
                "id": 3592,
                "name": "ParameterList",
                "src": "3470:39:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3593,
                "name": "ParameterList",
                "src": "3518:0:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3338,
                                  "type": "mapping(uint256 => uint256)",
                                  "value": "totalBalances"
                                },
                                "id": 3594,
                                "name": "Identifier",
                                "src": "3528:13:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3589,
                                  "type": "uint256",
                                  "value": "id"
                                },
                                "id": 3595,
                                "name": "Identifier",
                                "src": "3542:2:7"
                              }
                            ],
                            "id": 3596,
                            "name": "IndexAccess",
                            "src": "3528:17:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "add",
                                  "referencedDeclaration": 4422,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3338,
                                          "type": "mapping(uint256 => uint256)",
                                          "value": "totalBalances"
                                        },
                                        "id": 3597,
                                        "name": "Identifier",
                                        "src": "3548:13:7"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3589,
                                          "type": "uint256",
                                          "value": "id"
                                        },
                                        "id": 3598,
                                        "name": "Identifier",
                                        "src": "3562:2:7"
                                      }
                                    ],
                                    "id": 3599,
                                    "name": "IndexAccess",
                                    "src": "3548:17:7"
                                  }
                                ],
                                "id": 3600,
                                "name": "MemberAccess",
                                "src": "3548:21:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3591,
                                  "type": "uint256",
                                  "value": "value"
                                },
                                "id": 3601,
                                "name": "Identifier",
                                "src": "3570:5:7"
                              }
                            ],
                            "id": 3602,
                            "name": "FunctionCall",
                            "src": "3548:28:7"
                          }
                        ],
                        "id": 3603,
                        "name": "Assignment",
                        "src": "3528:48:7"
                      }
                    ],
                    "id": 3604,
                    "name": "ExpressionStatement",
                    "src": "3528:48:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(address => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2305,
                                      "type": "mapping(uint256 => mapping(address => uint256))",
                                      "value": "_balances"
                                    },
                                    "id": 3605,
                                    "name": "Identifier",
                                    "src": "3586:9:7"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3589,
                                      "type": "uint256",
                                      "value": "id"
                                    },
                                    "id": 3606,
                                    "name": "Identifier",
                                    "src": "3596:2:7"
                                  }
                                ],
                                "id": 3608,
                                "name": "IndexAccess",
                                "src": "3586:13:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3587,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 3607,
                                "name": "Identifier",
                                "src": "3600:2:7"
                              }
                            ],
                            "id": 3609,
                            "name": "IndexAccess",
                            "src": "3586:17:7"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "mapping(address => uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2305,
                                          "type": "mapping(uint256 => mapping(address => uint256))",
                                          "value": "_balances"
                                        },
                                        "id": 3610,
                                        "name": "Identifier",
                                        "src": "3606:9:7"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3589,
                                          "type": "uint256",
                                          "value": "id"
                                        },
                                        "id": 3611,
                                        "name": "Identifier",
                                        "src": "3616:2:7"
                                      }
                                    ],
                                    "id": 3612,
                                    "name": "IndexAccess",
                                    "src": "3606:13:7"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3587,
                                      "type": "address",
                                      "value": "to"
                                    },
                                    "id": 3613,
                                    "name": "Identifier",
                                    "src": "3620:2:7"
                                  }
                                ],
                                "id": 3614,
                                "name": "IndexAccess",
                                "src": "3606:17:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3591,
                                  "type": "uint256",
                                  "value": "value"
                                },
                                "id": 3615,
                                "name": "Identifier",
                                "src": "3626:5:7"
                              }
                            ],
                            "id": 3616,
                            "name": "BinaryOperation",
                            "src": "3606:25:7"
                          }
                        ],
                        "id": 3617,
                        "name": "Assignment",
                        "src": "3586:45:7"
                      }
                    ],
                    "id": 3618,
                    "name": "ExpressionStatement",
                    "src": "3586:45:7"
                  }
                ],
                "id": 3619,
                "name": "Block",
                "src": "3518:186:7"
              }
            ],
            "id": 3620,
            "name": "FunctionDefinition",
            "src": "3454:250:7"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_doBurn",
              "scope": 3656,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "from",
                      "scope": 3655,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3621,
                        "name": "ElementaryTypeName",
                        "src": "3727:7:7"
                      }
                    ],
                    "id": 3622,
                    "name": "VariableDeclaration",
                    "src": "3727:12:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 3655,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3623,
                        "name": "ElementaryTypeName",
                        "src": "3741:7:7"
                      }
                    ],
                    "id": 3624,
                    "name": "VariableDeclaration",
                    "src": "3741:10:7"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "value",
                      "scope": 3655,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3625,
                        "name": "ElementaryTypeName",
                        "src": "3753:7:7"
                      }
                    ],
                    "id": 3626,
                    "name": "VariableDeclaration",
                    "src": "3753:13:7"
                  }
                ],
                "id": 3627,
                "name": "ParameterList",
                "src": "3726:41:7"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3628,
                "name": "ParameterList",
                "src": "3776:0:7"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(address => uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2305,
                                      "type": "mapping(uint256 => mapping(address => uint256))",
                                      "value": "_balances"
                                    },
                                    "id": 3629,
                                    "name": "Identifier",
                                    "src": "3786:9:7"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3624,
                                      "type": "uint256",
                                      "value": "id"
                                    },
                                    "id": 3630,
                                    "name": "Identifier",
                                    "src": "3796:2:7"
                                  }
                                ],
                                "id": 3632,
                                "name": "IndexAccess",
                                "src": "3786:13:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3622,
                                  "type": "address",
                                  "value": "from"
                                },
                                "id": 3631,
                                "name": "Identifier",
                                "src": "3800:4:7"
                              }
                            ],
                            "id": 3633,
                            "name": "IndexAccess",
                            "src": "3786:19:7"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sub",
                                  "referencedDeclaration": 4439,
                                  "type": "function (uint256,uint256) pure returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2305,
                                              "type": "mapping(uint256 => mapping(address => uint256))",
                                              "value": "_balances"
                                            },
                                            "id": 3634,
                                            "name": "Identifier",
                                            "src": "3808:9:7"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3624,
                                              "type": "uint256",
                                              "value": "id"
                                            },
                                            "id": 3635,
                                            "name": "Identifier",
                                            "src": "3818:2:7"
                                          }
                                        ],
                                        "id": 3636,
                                        "name": "IndexAccess",
                                        "src": "3808:13:7"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3622,
                                          "type": "address",
                                          "value": "from"
                                        },
                                        "id": 3637,
                                        "name": "Identifier",
                                        "src": "3822:4:7"
                                      }
                                    ],
                                    "id": 3638,
                                    "name": "IndexAccess",
                                    "src": "3808:19:7"
                                  }
                                ],
                                "id": 3639,
                                "name": "MemberAccess",
                                "src": "3808:23:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3626,
                                  "type": "uint256",
                                  "value": "value"
                                },
                                "id": 3640,
                                "name": "Identifier",
                                "src": "3832:5:7"
                              }
                            ],
                            "id": 3641,
                            "name": "FunctionCall",
                            "src": "3808:30:7"
                          }
                        ],
                        "id": 3642,
                        "name": "Assignment",
                        "src": "3786:52:7"
                      }
                    ],
                    "id": 3643,
                    "name": "ExpressionStatement",
                    "src": "3786:52:7"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3338,
                                  "type": "mapping(uint256 => uint256)",
                                  "value": "totalBalances"
                                },
                                "id": 3644,
                                "name": "Identifier",
                                "src": "3848:13:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3624,
                                  "type": "uint256",
                                  "value": "id"
                                },
                                "id": 3645,
                                "name": "Identifier",
                                "src": "3862:2:7"
                              }
                            ],
                            "id": 3646,
                            "name": "IndexAccess",
                            "src": "3848:17:7"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3338,
                                      "type": "mapping(uint256 => uint256)",
                                      "value": "totalBalances"
                                    },
                                    "id": 3647,
                                    "name": "Identifier",
                                    "src": "3868:13:7"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3624,
                                      "type": "uint256",
                                      "value": "id"
                                    },
                                    "id": 3648,
                                    "name": "Identifier",
                                    "src": "3882:2:7"
                                  }
                                ],
                                "id": 3649,
                                "name": "IndexAccess",
                                "src": "3868:17:7"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3626,
                                  "type": "uint256",
                                  "value": "value"
                                },
                                "id": 3650,
                                "name": "Identifier",
                                "src": "3888:5:7"
                              }
                            ],
                            "id": 3651,
                            "name": "BinaryOperation",
                            "src": "3868:25:7"
                          }
                        ],
                        "id": 3652,
                        "name": "Assignment",
                        "src": "3848:45:7"
                      }
                    ],
                    "id": 3653,
                    "name": "ExpressionStatement",
                    "src": "3848:45:7"
                  }
                ],
                "id": 3654,
                "name": "Block",
                "src": "3776:190:7"
              }
            ],
            "id": 3655,
            "name": "FunctionDefinition",
            "src": "3710:256:7"
          }
        ],
        "id": 3656,
        "name": "ContractDefinition",
        "src": "244:3724:7"
      }
    ],
    "id": 3657,
    "name": "SourceUnit",
    "src": "46:3922:7"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.6+commit.7338295f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2021-06-03T23:56:22.295Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "balanceOf(address,uint256)": {
        "details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
      },
      "balanceOfBatch(address[],uint256[])": {
        "details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
      },
      "constructor": {
        "params": {
          "uri_": "Description URI."
        }
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC1155-isApprovedForAll}."
      },
      "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
        "details": "See {IERC1155-safeBatchTransferFrom}."
      },
      "safeTransferFrom(address,address,uint256,uint256,bytes)": {
        "details": "See {IERC1155-safeTransferFrom}."
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC1155-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}. Time complexity O(1), guaranteed to always use less than 30 000 gas."
      },
      "totalSupply(uint256)": {
        "params": {
          "id": "Token ID."
        },
        "returns": {
          "_0": "Total supply."
        }
      },
      "uri(uint256)": {
        "details": "See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."
      }
    },
    "title": "A base contract for an ERC-1155 contract with calculation of totals.",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "constructor": {
        "notice": "Construct a token contract with given description URI."
      },
      "totalSupply(uint256)": {
        "notice": "Total supply of a token (conforms to `IERC1155Views`)."
      }
    },
    "version": 1
  }
}