{
  "contractName": "ERC1155",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri_",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": "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": "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": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "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": "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"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\"}],\"devdoc\":{\"details\":\"Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._\",\"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\":{\"details\":\"See {_setURI}.\"},\"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.\"},\"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.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol\":\"ERC1155\"},\"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\"]},\"@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": "0x60806040523480156200001157600080fd5b5060405162001da638038062001da6833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052506200010191506301ffc9a760e01b905062000137565b6200010c81620001bc565b6200011e636cdb3d1360e11b62000137565b620001306303a24d0760e21b62000137565b5062000281565b6001600160e01b0319808216141562000197576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001d1906003906020840190620001d5565b5050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200020d576000855562000258565b82601f106200022857805160ff191683800117855562000258565b8280016001018555821562000258579182015b82811115620002585782518255916020019190600101906200023b565b50620002669291506200026a565b5090565b5b808211156200026657600081556001016200026b565b611b1580620002916000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610392578063a22cb46514610509578063e985e9c514610544578063f242432a1461057f57610087565b8062fdd58e1461008c57806301ffc9a7146100d75780630e89341c1461012a5780632eb2c2d6146101bc575b600080fd5b6100c5600480360360408110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610657565b60408051918252519081900360200190f35b610116600480360360208110156100ed57600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166106fa565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610731565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610181578181015183820152602001610169565b50505050905090810190601f1680156101ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610390600480360360a08110156101d257600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561021357600080fd5b82018360208201111561022557600080fd5b8035906020019184602083028401116401000000008311171561024757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460208302840111640100000000831117156102cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561031b57600080fd5b82018360208201111561032d57600080fd5b8035906020019184600183028401116401000000008311171561034f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107e7945050505050565b005b6104b9600480360360408110156103a857600080fd5b8101906020810181356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460208302840111640100000000831117156103f757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561044757600080fd5b82018360208201111561045957600080fd5b8035906020019184602083028401116401000000008311171561047b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bb5945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104f55781810151838201526020016104dd565b505050509050019250505060405180910390f35b6103906004803603604081101561051f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d9b565b6101166004803603604081101561055a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ef6565b610390600480360360a081101561059557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105e257600080fd5b8201836020820111156105f457600080fd5b8035906020019184600183028401116401000000008311171561061657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f31945050505050565b600073ffffffffffffffffffffffffffffffffffffffff83166106c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611960602b913960400191505060405180910390fd5b50600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107db5780601f106107b0576101008083540402835291602001916107db565b820191906000526020600020905b8154815290600101906020018083116107be57829003601f168201915b50505050509050919050565b8151835114610841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611ab86028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119e56025913960400191505060405180910390fd5b6108b561117e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806108fa57506108fa856108f561117e565b610ef6565b61094f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611a0a6032913960400191505060405180910390fd5b600061095961117e565b9050610969818787878787610bad565b60005b8451811015610a9e57600085828151811061098357fe5b60200260200101519050600085838151811061099b57fe5b60200260200101519050610a22816040518060600160405280602a8152602001611a3c602a91396001600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111839092919063ffffffff16565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e811685529252808320939093558a1681522054610a669082611234565b600092835260016020818152604080862073ffffffffffffffffffffffffffffffffffffffff8d16875290915290932055500161096c565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610b4b578181015183820152602001610b33565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610b8a578181015183820152602001610b72565b5050505090500194505050505060405180910390a4610bad8187878787876112af565b505050505050565b60608151835114610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611a8f6029913960400191505060405180910390fd5b6000835167ffffffffffffffff81118015610c2b57600080fd5b50604051908082528060200260200182016040528015610c55578160200160208202803683370190505b50905060005b8451811015610d9357600073ffffffffffffffffffffffffffffffffffffffff16858281518110610c8857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061198b6031913960400191505060405180910390fd5b60016000858381518110610d0d57fe5b602002602001015181526020019081526020016000206000868381518110610d3157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610d8057fe5b6020908102919091010152600101610c5b565b509392505050565b8173ffffffffffffffffffffffffffffffffffffffff16610dba61117e565b73ffffffffffffffffffffffffffffffffffffffff161415610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611a666029913960400191505060405180910390fd5b8060026000610e3461117e565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155610ea361117e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8416610f9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119e56025913960400191505060405180910390fd5b610fa561117e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610fe55750610fe5856108f561117e565b61103a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806119bc6029913960400191505060405180910390fd5b600061104461117e565b9050611064818787611055886115e1565b61105e886115e1565b87610bad565b6110b8836040518060600160405280602a8152602001611a3c602a9139600087815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190611183565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b811685529252808320939093558716815220546110fc9084611234565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610bad818787878787611626565b335b90565b6000818484111561122c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111f15781810151838201526020016111d9565b50505050905090810190601f16801561121e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156112a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6112ce8473ffffffffffffffffffffffffffffffffffffffff16611816565b15610bad578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561138357818101518382015260200161136b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156113c25781810151838201526020016113aa565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156113fe5781810151838201526020016113e6565b50505050905090810190601f16801561142b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561145057600080fd5b505af192505050801561147557506040513d602081101561147057600080fd5b505160015b61153e57611481611822565b8061148c57506114ed565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283518493919283926044019190850190808383600083156111f15781810151838201526020016111d9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119046034913960400191505060405180910390fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806119386028913960400191505060405180910390fd5b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061161557fe5b602090810291909101015292915050565b6116458473ffffffffffffffffffffffffffffffffffffffff16611816565b15610bad578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116fb5781810151838201526020016116e3565b50505050905090810190601f1680156117285780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561174b57600080fd5b505af192505050801561177057506040513d602081101561176b57600080fd5b505160015b61177c57611481611822565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806119386028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561183257611180565b600481823e6308c379a0611846825161181c565b1461185057611180565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d67ffffffffffffffff816024840111818411171561189e5750505050611180565b828401925082519150808211156118b85750505050611180565b503d830160208284010111156118d057505050611180565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212202fdb122250567368b4b2e3d5de3dfb5bbade384bc729443664e918f696250b5564736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f414610392578063a22cb46514610509578063e985e9c514610544578063f242432a1461057f57610087565b8062fdd58e1461008c57806301ffc9a7146100d75780630e89341c1461012a5780632eb2c2d6146101bc575b600080fd5b6100c5600480360360408110156100a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610657565b60408051918252519081900360200190f35b610116600480360360208110156100ed57600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166106fa565b604080519115158252519081900360200190f35b6101476004803603602081101561014057600080fd5b5035610731565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610181578181015183820152602001610169565b50505050905090810190601f1680156101ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610390600480360360a08110156101d257600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561021357600080fd5b82018360208201111561022557600080fd5b8035906020019184602083028401116401000000008311171561024757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561029757600080fd5b8201836020820111156102a957600080fd5b803590602001918460208302840111640100000000831117156102cb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561031b57600080fd5b82018360208201111561032d57600080fd5b8035906020019184600183028401116401000000008311171561034f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107e7945050505050565b005b6104b9600480360360408110156103a857600080fd5b8101906020810181356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460208302840111640100000000831117156103f757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561044757600080fd5b82018360208201111561045957600080fd5b8035906020019184602083028401116401000000008311171561047b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610bb5945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104f55781810151838201526020016104dd565b505050509050019250505060405180910390f35b6103906004803603604081101561051f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610d9b565b6101166004803603604081101561055a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ef6565b610390600480360360a081101561059557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105e257600080fd5b8201836020820111156105f457600080fd5b8035906020019184600183028401116401000000008311171561061657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610f31945050505050565b600073ffffffffffffffffffffffffffffffffffffffff83166106c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180611960602b913960400191505060405180910390fd5b50600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526020819052604090205460ff1690565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107db5780601f106107b0576101008083540402835291602001916107db565b820191906000526020600020905b8154815290600101906020018083116107be57829003601f168201915b50505050509050919050565b8151835114610841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611ab86028913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119e56025913960400191505060405180910390fd5b6108b561117e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806108fa57506108fa856108f561117e565b610ef6565b61094f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611a0a6032913960400191505060405180910390fd5b600061095961117e565b9050610969818787878787610bad565b60005b8451811015610a9e57600085828151811061098357fe5b60200260200101519050600085838151811061099b57fe5b60200260200101519050610a22816040518060600160405280602a8152602001611a3c602a91396001600086815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111839092919063ffffffff16565b600083815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8e811685529252808320939093558a1681522054610a669082611234565b600092835260016020818152604080862073ffffffffffffffffffffffffffffffffffffffff8d16875290915290932055500161096c565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610b4b578181015183820152602001610b33565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610b8a578181015183820152602001610b72565b5050505090500194505050505060405180910390a4610bad8187878787876112af565b505050505050565b60608151835114610c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611a8f6029913960400191505060405180910390fd5b6000835167ffffffffffffffff81118015610c2b57600080fd5b50604051908082528060200260200182016040528015610c55578160200160208202803683370190505b50905060005b8451811015610d9357600073ffffffffffffffffffffffffffffffffffffffff16858281518110610c8857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415610cfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061198b6031913960400191505060405180910390fd5b60016000858381518110610d0d57fe5b602002602001015181526020019081526020016000206000868381518110610d3157fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054828281518110610d8057fe5b6020908102919091010152600101610c5b565b509392505050565b8173ffffffffffffffffffffffffffffffffffffffff16610dba61117e565b73ffffffffffffffffffffffffffffffffffffffff161415610e27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611a666029913960400191505060405180910390fd5b8060026000610e3461117e565b73ffffffffffffffffffffffffffffffffffffffff90811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001692151592909217909155610ea361117e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b73ffffffffffffffffffffffffffffffffffffffff8416610f9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806119e56025913960400191505060405180910390fd5b610fa561117e565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610fe55750610fe5856108f561117e565b61103a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806119bc6029913960400191505060405180910390fd5b600061104461117e565b9050611064818787611055886115e1565b61105e886115e1565b87610bad565b6110b8836040518060600160405280602a8152602001611a3c602a9139600087815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020549190611183565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8b811685529252808320939093558716815220546110fc9084611234565b600085815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610bad818787878787611626565b335b90565b6000818484111561122c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111f15781810151838201526020016111d9565b50505050905090810190601f16801561121e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156112a857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6112ce8473ffffffffffffffffffffffffffffffffffffffff16611816565b15610bad578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561138357818101518382015260200161136b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156113c25781810151838201526020016113aa565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156113fe5781810151838201526020016113e6565b50505050905090810190601f16801561142b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561145057600080fd5b505af192505050801561147557506040513d602081101561147057600080fd5b505160015b61153e57611481611822565b8061148c57506114ed565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283518493919283926044019190850190808383600083156111f15781810151838201526020016111d9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806119046034913960400191505060405180910390fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806119386028913960400191505060405180910390fd5b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061161557fe5b602090810291909101015292915050565b6116458473ffffffffffffffffffffffffffffffffffffffff16611816565b15610bad578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116fb5781810151838201526020016116e3565b50505050905090810190601f1680156117285780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561174b57600080fd5b505af192505050801561177057506040513d602081101561176b57600080fd5b505160015b61177c57611481611822565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146115d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806119386028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561183257611180565b600481823e6308c379a0611846825161181c565b1461185057611180565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d67ffffffffffffffff816024840111818411171561189e5750505050611180565b828401925082519150808211156118b85750505050611180565b503d830160208284010111156118d057505050611180565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212202fdb122250567368b4b2e3d5de3dfb5bbade384bc729443664e918f696250b5564736f6c63430007060033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:992:39",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:39",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "71:31:39",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "73:27:39",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "89:3:39",
                        "type": "",
                        "value": "224"
                      },
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "94:5:39"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "85:3:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "85:15:39"
                  },
                  "variableNames": [
                    {
                      "name": "newValue",
                      "nodeType": "YulIdentifier",
                      "src": "73:8:39"
                    }
                  ]
                }
              ]
            },
            "name": "shift_right_224_unsigned",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "48:5:39",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "newValue",
                "nodeType": "YulTypedName",
                "src": "58:8:39",
                "type": ""
              }
            ],
            "src": "14:88:39"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "154:836:39",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "194:9:39",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "196:5:39"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [],
                        "functionName": {
                          "name": "returndatasize",
                          "nodeType": "YulIdentifier",
                          "src": "170:14:39"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "170:16:39"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "188:4:39",
                        "type": "",
                        "value": "0x44"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "167:2:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "167:26:39"
                  },
                  "nodeType": "YulIf",
                  "src": "164:2:39"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "ret",
                        "nodeType": "YulIdentifier",
                        "src": "227:3:39"
                      },
                      {
                        "name": "ret",
                        "nodeType": "YulIdentifier",
                        "src": "232:3:39"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "237:1:39",
                        "type": "",
                        "value": "4"
                      }
                    ],
                    "functionName": {
                      "name": "returndatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "212:14:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "212:27:39"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "212:27:39"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "312:9:39",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "314:5:39"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "ret",
                                    "nodeType": "YulIdentifier",
                                    "src": "292:3:39"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "286:5:39"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "286:10:39"
                              }
                            ],
                            "functionName": {
                              "name": "shift_right_224_unsigned",
                              "nodeType": "YulIdentifier",
                              "src": "261:24:39"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "261:36:39"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "299:10:39",
                            "type": "",
                            "value": "0x08c379a0"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "258:2:39"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "258:52:39"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "251:6:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "251:60:39"
                  },
                  "nodeType": "YulIf",
                  "src": "248:2:39"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "330:21:39",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "348:2:39",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "342:5:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "342:9:39"
                  },
                  "variables": [
                    {
                      "name": "data",
                      "nodeType": "YulTypedName",
                      "src": "334:4:39",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "375:4:39"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "381:1:39",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "returndatasize",
                              "nodeType": "YulIdentifier",
                              "src": "388:14:39"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "388:16:39"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "406:66:39",
                            "type": "",
                            "value": "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "384:3:39"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "384:89:39"
                      }
                    ],
                    "functionName": {
                      "name": "returndatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "360:14:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "360:114:39"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "360:114:39"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "483:25:39",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "503:4:39"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "497:5:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "497:11:39"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "487:6:39",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "517:26:39",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "returndatasize",
                      "nodeType": "YulIdentifier",
                      "src": "527:14:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "527:16:39"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "521:2:39",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "552:28:39",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "562:18:39",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "556:2:39",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "638:9:39",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "640:5:39"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "598:6:39"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "606:2:39"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "595:2:39"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "595:14:39"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "618:6:39"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "626:4:39",
                                "type": "",
                                "value": "0x24"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "614:3:39"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "614:17:39"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "633:2:39"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "611:2:39"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "611:25:39"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "592:2:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "592:45:39"
                  },
                  "nodeType": "YulIf",
                  "src": "589:2:39"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "656:28:39",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "671:4:39"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "677:6:39"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "667:3:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "667:17:39"
                  },
                  "variables": [
                    {
                      "name": "msg",
                      "nodeType": "YulTypedName",
                      "src": "660:3:39",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "693:24:39",
                  "value": {
                    "arguments": [
                      {
                        "name": "msg",
                        "nodeType": "YulIdentifier",
                        "src": "713:3:39"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "707:5:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "707:10:39"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "697:6:39",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "744:9:39",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "746:5:39"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "732:6:39"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "740:2:39"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "729:2:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "729:14:39"
                  },
                  "nodeType": "YulIf",
                  "src": "726:2:39"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "826:9:39",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "828:5:39"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "776:3:39"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "781:6:39"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "772:3:39"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "772:16:39"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "790:4:39",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "768:3:39"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "768:27:39"
                      },
                      {
                        "arguments": [
                          {
                            "name": "data",
                            "nodeType": "YulIdentifier",
                            "src": "801:4:39"
                          },
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "returndatasize",
                              "nodeType": "YulIdentifier",
                              "src": "807:14:39"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "807:16:39"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "797:3:39"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "797:27:39"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "765:2:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "765:60:39"
                  },
                  "nodeType": "YulIf",
                  "src": "762:2:39"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "851:2:39",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "863:3:39"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "876:6:39"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "884:2:39",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "872:3:39"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "872:15:39"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "889:66:39",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "868:3:39"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "868:88:39"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "859:3:39"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "859:98:39"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "959:4:39",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "855:3:39"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "855:109:39"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "844:6:39"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "844:121:39"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "844:121:39"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "974:10:39",
                  "value": {
                    "name": "msg",
                    "nodeType": "YulIdentifier",
                    "src": "981:3:39"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "974:3:39"
                    }
                  ]
                }
              ]
            },
            "name": "try_decode_error_message",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "146:3:39",
                "type": ""
              }
            ],
            "src": "107:883:39"
          }
        ]
      },
      "contents": "{\n    { }\n    function shift_right_224_unsigned(value) -> newValue\n    { newValue := shr(224, value) }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        returndatacopy(ret, ret, 4)\n        if iszero(eq(shift_right_224_unsigned(mload(ret)), 0x08c379a0)) { leave }\n        let data := mload(64)\n        returndatacopy(data, 4, add(returndatasize(), 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc))\n        let offset := mload(data)\n        let _1 := returndatasize()\n        let _2 := 0xffffffffffffffff\n        if or(gt(offset, _2), gt(add(offset, 0x24), _1)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _2) { leave }\n        if gt(add(add(msg, length), 0x20), add(data, returndatasize())) { leave }\n        mstore(64, add(add(msg, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20))\n        ret := msg\n    }\n}",
      "id": 39,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "700:13774:5:-:0;;;2156:347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:347:5;;;;;;;;;;-1:-1:-1;2156:347:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2156:347:5;;-1:-1:-1;768:40:18;;-1:-1:-1;;;;787:20:18;-1:-1:-1;768:18:18;:40::i;:::-;2199:13:5;2207:4;2199:7;:13::i;:::-;2301:41;-1:-1:-1;;;2301:18:5;:41::i;:::-;2442:54;-1:-1:-1;;;2442:18:5;:54::i;:::-;2156:347;700:13774;;1499:198:18;-1:-1:-1;;;;;;1582:25:18;;;;;1574:66;;;;;-1:-1:-1;;;1574:66:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1650:33:18;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1650:40:18;1686:4;1650:40;;;1499:198::o;7807:86:5:-;7873:13;;;;:4;;:13;;;;;:::i;:::-;;7807:86;:::o;700:13774::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;700:13774:5;;;-1:-1:-1;700:13774:5;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "700:13774:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3141:228;;;;;;;;;;;;;;;;-1:-1:-1;3141:228:5;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;965:140:18;;;;;;;;;;;;;;;;-1:-1:-1;965:140:18;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2902:97:5;;;;;;;;;;;;;;;;-1:-1:-1;2902:97:5;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5800:1184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5800:1184:5;;;;;;;;-1:-1:-1;5800:1184:5;;-1:-1:-1;;5800:1184:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5800:1184:5;;;;;;;;-1:-1:-1;5800:1184:5;;-1:-1:-1;;5800:1184:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5800:1184:5;;-1:-1:-1;5800:1184:5;;-1:-1:-1;;;;;5800:1184:5:i;:::-;;3526:631;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3526:631:5;;;;;;;;-1:-1:-1;3526:631:5;;-1:-1:-1;;3526:631:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3526:631:5;;-1:-1:-1;3526:631:5;;-1:-1:-1;;;;;3526:631:5:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4225:306;;;;;;;;;;;;;;;;-1:-1:-1;4225:306:5;;;;;;;;;;;:::i;4598:166::-;;;;;;;;;;;;;;;;-1:-1:-1;4598:166:5;;;;;;;;;;;:::i;4831:897::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4831:897:5;;-1:-1:-1;4831:897:5;;-1:-1:-1;;;;;4831:897:5:i;3141:228::-;3227:7;3254:21;;;3246:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3340:13:5;;;;:9;:13;;;;;;;;:22;;;;;;;;;;;;;3141:228::o;965:140:18:-;1065:33;;1042:4;1065:33;;;;;;;;;;;;;;965:140::o;2902:97:5:-;2988:4;2981:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2956:13;;2981:11;;2988:4;;2981:11;;2988:4;2981:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2902:97;;;:::o;5800:1184::-;6054:7;:14;6040:3;:10;:28;6032:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6131:16;;;6123:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6228:12;:10;:12::i;:::-;6220:20;;:4;:20;;;:60;;;;6244:36;6261:4;6267:12;:10;:12::i;:::-;6244:16;:36::i;:::-;6199:157;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6367:16;6386:12;:10;:12::i;:::-;6367:31;;6409:60;6430:8;6440:4;6446:2;6450:3;6455:7;6464:4;6409:20;:60::i;:::-;6485:9;6480:349;6504:3;:10;6500:1;:14;6480:349;;;6535:10;6548:3;6552:1;6548:6;;;;;;;;;;;;;;6535:19;;6568:14;6585:7;6593:1;6585:10;;;;;;;;;;;;;;6568:27;;6632:123;6673:6;6632:123;;;;;;;;;;;;;;;;;:9;:13;6642:2;6632:13;;;;;;;;;;;:19;6646:4;6632:19;;;;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;6610:13;;;;:9;:13;;;;;;;;:19;;;;;;;;;;;:145;;;;6789:17;;;;;;:29;;6811:6;6789:21;:29::i;:::-;6769:13;;;;:9;:13;;;;;;;;:17;;;;;;;;;;;:49;-1:-1:-1;6516:3:5;6480:349;;;;6874:2;6844:47;;6868:4;6844:47;;6858:8;6844:47;;;6878:3;6883:7;6844:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6902:75;6938:8;6948:4;6954:2;6958:3;6963:7;6972:4;6902:35;:75::i;:::-;5800:1184;;;;;;:::o;3526:631::-;3699:16;3758:3;:10;3739:8;:15;:29;3731:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3825:30;3872:8;:15;3858:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3858:30:5;;3825:63;;3904:9;3899:221;3923:8;:15;3919:1;:19;3899:221;;;3990:1;3967:25;;:8;3976:1;3967:11;;;;;;;;;;;;;;:25;;;;3959:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4079:9;:17;4089:3;4093:1;4089:6;;;;;;;;;;;;;;4079:17;;;;;;;;;;;:30;4097:8;4106:1;4097:11;;;;;;;;;;;;;;4079:30;;;;;;;;;;;;;;;;4060:13;4074:1;4060:16;;;;;;;;;;;;;;;;;:49;3940:3;;3899:221;;;-1:-1:-1;4137:13:5;3526:631;-1:-1:-1;;;3526:631:5:o;4225:306::-;4343:8;4327:24;;:12;:10;:12::i;:::-;:24;;;;4319:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4453:8;4408:18;:32;4427:12;:10;:12::i;:::-;4408:32;;;;;;;;;;;;;;;;;;-1:-1:-1;4408:32:5;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;;4491:12;:10;:12::i;:::-;4476:48;;;4515:8;4476:48;;;;;;;;;;;;;;;;;;;;4225:306;;:::o;4598:166::-;4720:27;;;;4697:4;4720:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;4598:166::o;4831:897::-;5046:16;;;5038:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5143:12;:10;:12::i;:::-;5135:20;;:4;:20;;;:60;;;;5159:36;5176:4;5182:12;:10;:12::i;5159:36::-;5114:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5273:16;5292:12;:10;:12::i;:::-;5273:31;;5315:96;5336:8;5346:4;5352:2;5356:21;5374:2;5356:17;:21::i;:::-;5379:25;5397:6;5379:17;:25::i;:::-;5406:4;5315:20;:96::i;:::-;5444:77;5468:6;5444:77;;;;;;;;;;;;;;;;;:13;;;;:9;:13;;;;;;;;:19;;;;;;;;;;;;:77;:23;:77::i;:::-;5422:13;;;;:9;:13;;;;;;;;:19;;;;;;;;;;;:99;;;;5551:17;;;;;;:29;;5573:6;5551:21;:29::i;:::-;5531:13;;;;:9;:13;;;;;;;;:17;;;;;;;;;;;;;;:49;;;;5596:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5653:68;5684:8;5694:4;5700:2;5704;5708:6;5716:4;5653:30;:68::i;598:104:17:-;685:10;598:104;;:::o;1754:187:20:-;1840:7;1875:12;1867:6;;;;1859:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1910:5:20;;;1754:187::o;882:176::-;940:7;971:5;;;994:6;;;;986:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:1;882:176;-1:-1:-1;;;882:176:20:o;13494:779:5:-;13739:15;:2;:13;;;:15::i;:::-;13735:532;;;13791:2;13774:43;;;13818:8;13828:4;13834:3;13839:7;13848:4;13774:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13774:79:5;;;13770:487;;;;:::i;:::-;;;;;;;;14126:14;;;;;;;;;;;;;;;;;;;;14133:6;;14126:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13770:487;14180:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13770:487;13902:64;;;13914:52;13902:64;13898:161;;13990:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13898:161;13854:219;13494:779;;;;;;:::o;14279:193::-;14398:16;;;14412:1;14398:16;;;;;;;;;14345;;14373:22;;14398:16;;;;;;;;;;;;-1:-1:-1;14398:16:5;14373:41;;14435:7;14424:5;14430:1;14424:8;;;;;;;;;;;;;;;;;:18;14460:5;14279:193;-1:-1:-1;;14279:193:5:o;12746:742::-;12966:15;:2;:13;;;:15::i;:::-;12962:520;;;13018:2;13001:38;;;13040:8;13050:4;13056:2;13060:6;13068:4;13001:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13001:72:5;;;12997:475;;;;:::i;:::-;13122:59;;;13134:47;13122:59;13118:156;;13205:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:413:34;1086:20;1124:8;;;726:413::o;14:88:39:-;89:3;85:15;;71:31::o;107:883::-;;188:4;170:16;167:26;164:2;;;196:5;;164:2;237:1;232:3;227;212:27;299:10;261:36;292:3;286:10;261:36;:::i;:::-;258:52;248:2;;314:5;;248:2;348;342:9;406:66;388:16;384:89;381:1;375:4;360:114;503:4;497:11;527:16;562:18;633:2;626:4;618:6;614:17;611:25;606:2;598:6;595:14;592:45;589:2;;;640:5;;;;;;589:2;677:6;671:4;667:17;656:28;;713:3;707:10;693:24;;740:2;732:6;729:14;726:2;;;746:5;;;;;;726:2;;807:16;801:4;797:27;790:4;781:6;776:3;772:16;768:27;765:60;762:2;;;828:5;;;;;762:2;884;872:15;889:66;868:88;859:98;;959:4;855:109;851:2;844:121;863:3;-1:-1:-1;;154:836:39;:::o",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol\";\nimport \"@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol\";\nimport \"@openzeppelin/contracts/GSN/Context.sol\";\nimport \"@openzeppelin/contracts/introspection/ERC165.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\n\n/**\n *\n * @dev Implementation of the basic standard multi-token.\n * See https://eips.ethereum.org/EIPS/eip-1155\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\n *\n * _Available since v3.1._\n */\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\n    using SafeMath for uint256;\n    using Address for address;\n\n    // Mapping from token ID to account balances\n    mapping (uint256 => mapping(address => uint256)) internal _balances;\n\n    // Mapping from account to operator approvals\n    mapping (address => mapping(address => bool)) internal _operatorApprovals;\n\n    // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\n    string private _uri;\n\n    /*\n     *     bytes4(keccak256('balanceOf(address,uint256)')) == 0x00fdd58e\n     *     bytes4(keccak256('balanceOfBatch(address[],uint256[])')) == 0x4e1273f4\n     *     bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465\n     *     bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5\n     *     bytes4(keccak256('safeTransferFrom(address,address,uint256,uint256,bytes)')) == 0xf242432a\n     *     bytes4(keccak256('safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)')) == 0x2eb2c2d6\n     *\n     *     => 0x00fdd58e ^ 0x4e1273f4 ^ 0xa22cb465 ^\n     *        0xe985e9c5 ^ 0xf242432a ^ 0x2eb2c2d6 == 0xd9b67a26\n     */\n    bytes4 private constant _INTERFACE_ID_ERC1155 = 0xd9b67a26;\n\n    /*\n     *     bytes4(keccak256('uri(uint256)')) == 0x0e89341c\n     */\n    bytes4 private constant _INTERFACE_ID_ERC1155_METADATA_URI = 0x0e89341c;\n\n    /**\n     * @dev See {_setURI}.\n     */\n    constructor (string memory uri_) {\n        _setURI(uri_);\n\n        // register the supported interfaces to conform to ERC1155 via ERC165\n        _registerInterface(_INTERFACE_ID_ERC1155);\n\n        // register the supported interfaces to conform to ERC1155MetadataURI via ERC165\n        _registerInterface(_INTERFACE_ID_ERC1155_METADATA_URI);\n    }\n\n    /**\n     * @dev See {IERC1155MetadataURI-uri}.\n     *\n     * This implementation returns the same URI for *all* token types. It relies\n     * on the token type ID substitution mechanism\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n     *\n     * Clients calling this function must replace the `\\{id\\}` substring with the\n     * actual token type ID.\n     */\n    function uri(uint256) external view override returns (string memory) {\n        return _uri;\n    }\n\n    /**\n     * @dev See {IERC1155-balanceOf}.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\n        require(account != address(0), \"ERC1155: balance query for the zero address\");\n        return _balances[id][account];\n    }\n\n    /**\n     * @dev See {IERC1155-balanceOfBatch}.\n     *\n     * Requirements:\n     *\n     * - `accounts` and `ids` must have the same length.\n     */\n    function balanceOfBatch(\n        address[] memory accounts,\n        uint256[] memory ids\n    )\n        public\n        view\n        virtual\n        override\n        returns (uint256[] memory)\n    {\n        require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n        uint256[] memory batchBalances = new uint256[](accounts.length);\n\n        for (uint256 i = 0; i < accounts.length; ++i) {\n            require(accounts[i] != address(0), \"ERC1155: batch balance query for the zero address\");\n            batchBalances[i] = _balances[ids[i]][accounts[i]];\n        }\n\n        return batchBalances;\n    }\n\n    /**\n     * @dev See {IERC1155-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        require(_msgSender() != operator, \"ERC1155: setting approval status for self\");\n\n        _operatorApprovals[_msgSender()][operator] = approved;\n        emit ApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC1155-isApprovedForAll}.\n     */\n    function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[account][operator];\n    }\n\n    /**\n     * @dev See {IERC1155-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    )\n        public\n        virtual\n        override\n    {\n        require(to != address(0), \"ERC1155: transfer to the zero address\");\n        require(\n            from == _msgSender() || isApprovedForAll(from, _msgSender()),\n            \"ERC1155: caller is not owner nor approved\"\n        );\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n        _balances[id][from] = _balances[id][from].sub(amount, \"ERC1155: insufficient balance for transfer\");\n        _balances[id][to] = _balances[id][to].add(amount);\n\n        emit TransferSingle(operator, from, to, id, amount);\n\n        _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\n    }\n\n    /**\n     * @dev See {IERC1155-safeBatchTransferFrom}.\n     */\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    )\n        public\n        virtual\n        override\n    {\n        require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n        require(to != address(0), \"ERC1155: transfer to the zero address\");\n        require(\n            from == _msgSender() || isApprovedForAll(from, _msgSender()),\n            \"ERC1155: transfer caller is not owner nor approved\"\n        );\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n        for (uint256 i = 0; i < ids.length; ++i) {\n            uint256 id = ids[i];\n            uint256 amount = amounts[i];\n\n            _balances[id][from] = _balances[id][from].sub(\n                amount,\n                \"ERC1155: insufficient balance for transfer\"\n            );\n            _balances[id][to] = _balances[id][to].add(amount);\n        }\n\n        emit TransferBatch(operator, from, to, ids, amounts);\n\n        _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\n    }\n\n    /**\n     * @dev Sets a new URI for all token types, by relying on the token type ID\n     * substitution mechanism\n     * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n     *\n     * By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n     * URI or any of the amounts in the JSON file at said URI will be replaced by\n     * clients with the token type ID.\n     *\n     * For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n     * interpreted by clients as\n     * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n     * for token type ID 0x4cce0.\n     *\n     * See {uri}.\n     *\n     * Because these URIs cannot be meaningfully represented by the {URI} event,\n     * this function emits no events.\n     */\n    function _setURI(string memory newuri) internal virtual {\n        _uri = newuri;\n    }\n\n    /**\n     * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.\n     *\n     * Emits a {TransferSingle} event.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n     * acceptance magic value.\n     */\n    function _mint(address account, uint256 id, uint256 amount, bytes memory data) internal virtual {\n        require(account != address(0), \"ERC1155: mint to the zero address\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n        _balances[id][account] = _balances[id][account].add(amount);\n        emit TransferSingle(operator, address(0), account, id, amount);\n\n        _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);\n    }\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n     *\n     * Requirements:\n     *\n     * - `ids` and `amounts` must have the same length.\n     * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n     * acceptance magic value.\n     */\n    function _mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal virtual {\n        require(to != address(0), \"ERC1155: mint to the zero address\");\n        require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n        for (uint i = 0; i < ids.length; i++) {\n            _balances[ids[i]][to] = amounts[i].add(_balances[ids[i]][to]);\n        }\n\n        emit TransferBatch(operator, address(0), to, ids, amounts);\n\n        _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens of token type `id` from `account`\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens of token type `id`.\n     */\n    function _burn(address account, uint256 id, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC1155: burn from the zero address\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), \"\");\n\n        _balances[id][account] = _balances[id][account].sub(\n            amount,\n            \"ERC1155: burn amount exceeds balance\"\n        );\n\n        emit TransferSingle(operator, account, address(0), id, amount);\n    }\n\n    /**\n     * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n     *\n     * Requirements:\n     *\n     * - `ids` and `amounts` must have the same length.\n     */\n    function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) internal virtual {\n        require(account != address(0), \"ERC1155: burn from the zero address\");\n        require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n        address operator = _msgSender();\n\n        _beforeTokenTransfer(operator, account, address(0), ids, amounts, \"\");\n\n        for (uint i = 0; i < ids.length; i++) {\n            _balances[ids[i]][account] = _balances[ids[i]][account].sub(\n                amounts[i],\n                \"ERC1155: burn amount exceeds balance\"\n            );\n        }\n\n        emit TransferBatch(operator, account, address(0), ids, amounts);\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting\n     * and burning, as well as batched variants.\n     *\n     * The same hook is called on both single and batched variants. For single\n     * transfers, the length of the `id` and `amount` arrays will be 1.\n     *\n     * Calling conditions (for each `id` and `amount` pair):\n     *\n     * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * of token type `id` will be  transferred to `to`.\n     * - When `from` is zero, `amount` tokens of token type `id` will be minted\n     * for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n     * will be burned.\n     * - `from` and `to` are never both zero.\n     * - `ids` and `amounts` have the same, non-zero length.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    )\n        internal virtual\n    { }\n\n    function _doSafeTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes memory data\n    )\n        internal\n    {\n        if (to.isContract()) {\n            try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n                if (response != IERC1155Receiver(to).onERC1155Received.selector) {\n                    revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n                }\n            } catch Error(string memory reason) {\n                revert(reason);\n            } catch {\n                revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n            }\n        }\n    }\n\n    function _doSafeBatchTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256[] memory ids,\n        uint256[] memory amounts,\n        bytes memory data\n    )\n        internal\n    {\n        if (to.isContract()) {\n            try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (bytes4 response) {\n                if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {\n                    revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n                }\n            } catch Error(string memory reason) {\n                revert(reason);\n            } catch {\n                revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n            }\n        }\n    }\n\n    function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n        uint256[] memory array = new uint256[](1);\n        array[0] = element;\n\n        return array;\n    }\n}\n",
  "sourcePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol",
  "ast": {
    "absolutePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol",
    "exportedSymbols": {
      "Address": [
        6821
      ],
      "Context": [
        4324
      ],
      "ERC1155": [
        3296
      ],
      "ERC165": [
        4381
      ],
      "IERC1155": [
        4790
      ],
      "IERC1155MetadataURI": [
        4805
      ],
      "IERC1155Receiver": [
        4846
      ],
      "IERC165": [
        4393
      ],
      "SafeMath": [
        4589
      ]
    },
    "id": 3297,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2277,
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0",
          "<",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:31:5"
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
        "id": 2278,
        "nodeType": "ImportDirective",
        "scope": 3297,
        "sourceUnit": 4791,
        "src": "66:60:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol",
        "id": 2279,
        "nodeType": "ImportDirective",
        "scope": 3297,
        "sourceUnit": 4806,
        "src": "127:71:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
        "file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
        "id": 2280,
        "nodeType": "ImportDirective",
        "scope": 3297,
        "sourceUnit": 4847,
        "src": "199:68:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
        "file": "@openzeppelin/contracts/GSN/Context.sol",
        "id": 2281,
        "nodeType": "ImportDirective",
        "scope": 3297,
        "sourceUnit": 4325,
        "src": "268:49:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/introspection/ERC165.sol",
        "file": "@openzeppelin/contracts/introspection/ERC165.sol",
        "id": 2282,
        "nodeType": "ImportDirective",
        "scope": 3297,
        "sourceUnit": 4382,
        "src": "318:58:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 2283,
        "nodeType": "ImportDirective",
        "scope": 3297,
        "sourceUnit": 4590,
        "src": "377:51:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
        "file": "@openzeppelin/contracts/utils/Address.sol",
        "id": 2284,
        "nodeType": "ImportDirective",
        "scope": 3297,
        "sourceUnit": 6822,
        "src": "429:51:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 2286,
              "name": "Context",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4324,
              "src": "720:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Context_$4324",
                "typeString": "contract Context"
              }
            },
            "id": 2287,
            "nodeType": "InheritanceSpecifier",
            "src": "720:7:5"
          },
          {
            "baseName": {
              "id": 2288,
              "name": "ERC165",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4381,
              "src": "729:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ERC165_$4381",
                "typeString": "contract ERC165"
              }
            },
            "id": 2289,
            "nodeType": "InheritanceSpecifier",
            "src": "729:6:5"
          },
          {
            "baseName": {
              "id": 2290,
              "name": "IERC1155",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4790,
              "src": "737:8:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC1155_$4790",
                "typeString": "contract IERC1155"
              }
            },
            "id": 2291,
            "nodeType": "InheritanceSpecifier",
            "src": "737:8:5"
          },
          {
            "baseName": {
              "id": 2292,
              "name": "IERC1155MetadataURI",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4805,
              "src": "747:19:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IERC1155MetadataURI_$4805",
                "typeString": "contract IERC1155MetadataURI"
              }
            },
            "id": 2293,
            "nodeType": "InheritanceSpecifier",
            "src": "747:19:5"
          }
        ],
        "contractDependencies": [
          4324,
          4381,
          4393,
          4790,
          4805
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 2285,
          "nodeType": "StructuredDocumentation",
          "src": "482:217:5",
          "text": " @dev Implementation of the basic standard multi-token.\n See https://eips.ethereum.org/EIPS/eip-1155\n Originally based on code by Enjin: https://github.com/enjin/erc-1155\n _Available since v3.1._"
        },
        "fullyImplemented": true,
        "id": 3296,
        "linearizedBaseContracts": [
          3296,
          4805,
          4790,
          4381,
          4393,
          4324
        ],
        "name": "ERC1155",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2296,
            "libraryName": {
              "id": 2294,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 4589,
              "src": "779:8:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$4589",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "773:27:5",
            "typeName": {
              "id": 2295,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "792:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 2299,
            "libraryName": {
              "id": 2297,
              "name": "Address",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6821,
              "src": "811:7:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Address_$6821",
                "typeString": "library Address"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "805:26:5",
            "typeName": {
              "id": 2298,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "823:7:5",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "constant": false,
            "id": 2305,
            "mutability": "mutable",
            "name": "_balances",
            "nodeType": "VariableDeclaration",
            "scope": 3296,
            "src": "886:67:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
              "typeString": "mapping(uint256 => mapping(address => uint256))"
            },
            "typeName": {
              "id": 2304,
              "keyType": {
                "id": 2300,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "895:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "886:48:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                "typeString": "mapping(uint256 => mapping(address => uint256))"
              },
              "valueType": {
                "id": 2303,
                "keyType": {
                  "id": 2301,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "914:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "906:27:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "valueType": {
                  "id": 2302,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "925:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2311,
            "mutability": "mutable",
            "name": "_operatorApprovals",
            "nodeType": "VariableDeclaration",
            "scope": 3296,
            "src": "1010:73:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(address => mapping(address => bool))"
            },
            "typeName": {
              "id": 2310,
              "keyType": {
                "id": 2306,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1019:7:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1010:45:5",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(address => mapping(address => bool))"
              },
              "valueType": {
                "id": 2309,
                "keyType": {
                  "id": 2307,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1038:7:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1030:24:5",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueType": {
                  "id": 2308,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1049:4:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2313,
            "mutability": "mutable",
            "name": "_uri",
            "nodeType": "VariableDeclaration",
            "scope": 3296,
            "src": "1204:19:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 2312,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "1204:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2316,
            "mutability": "constant",
            "name": "_INTERFACE_ID_ERC1155",
            "nodeType": "VariableDeclaration",
            "scope": 3296,
            "src": "1896:58:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2314,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "1896:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "hexValue": "30786439623637613236",
              "id": 2315,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1944:10:5",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_3652614694_by_1",
                "typeString": "int_const 3652614694"
              },
              "value": "0xd9b67a26"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 2319,
            "mutability": "constant",
            "name": "_INTERFACE_ID_ERC1155_METADATA_URI",
            "nodeType": "VariableDeclaration",
            "scope": 3296,
            "src": "2035:71:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes4",
              "typeString": "bytes4"
            },
            "typeName": {
              "id": 2317,
              "name": "bytes4",
              "nodeType": "ElementaryTypeName",
              "src": "2035:6:5",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              }
            },
            "value": {
              "hexValue": "30783065383933343163",
              "id": 2318,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "2096:10:5",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_243872796_by_1",
                "typeString": "int_const 243872796"
              },
              "value": "0x0e89341c"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 2337,
              "nodeType": "Block",
              "src": "2189:314:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2326,
                        "name": "uri_",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2322,
                        "src": "2207:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 2325,
                      "name": "_setURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2762,
                      "src": "2199:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (string memory)"
                      }
                    },
                    "id": 2327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2199:13:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2328,
                  "nodeType": "ExpressionStatement",
                  "src": "2199:13:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2330,
                        "name": "_INTERFACE_ID_ERC1155",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2316,
                        "src": "2320:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 2329,
                      "name": "_registerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4380,
                      "src": "2301:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                        "typeString": "function (bytes4)"
                      }
                    },
                    "id": 2331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2301:41:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2332,
                  "nodeType": "ExpressionStatement",
                  "src": "2301:41:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2334,
                        "name": "_INTERFACE_ID_ERC1155_METADATA_URI",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2319,
                        "src": "2461:34:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "id": 2333,
                      "name": "_registerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4380,
                      "src": "2442:18:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$",
                        "typeString": "function (bytes4)"
                      }
                    },
                    "id": 2335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2442:54:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2336,
                  "nodeType": "ExpressionStatement",
                  "src": "2442:54:5"
                }
              ]
            },
            "documentation": {
              "id": 2320,
              "nodeType": "StructuredDocumentation",
              "src": "2113:38:5",
              "text": " @dev See {_setURI}."
            },
            "id": 2338,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2322,
                  "mutability": "mutable",
                  "name": "uri_",
                  "nodeType": "VariableDeclaration",
                  "scope": 2338,
                  "src": "2169:18:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2321,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2169:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2168:20:5"
            },
            "returnParameters": {
              "id": 2324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2189:0:5"
            },
            "scope": 3296,
            "src": "2156:347:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4804
            ],
            "body": {
              "id": 2349,
              "nodeType": "Block",
              "src": "2971:28:5",
              "statements": [
                {
                  "expression": {
                    "id": 2347,
                    "name": "_uri",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2313,
                    "src": "2988:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 2346,
                  "id": 2348,
                  "nodeType": "Return",
                  "src": "2981:11:5"
                }
              ]
            },
            "documentation": {
              "id": 2339,
              "nodeType": "StructuredDocumentation",
              "src": "2509:388:5",
              "text": " @dev See {IERC1155MetadataURI-uri}.\n This implementation returns the same URI for *all* token types. It relies\n on the token type ID substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n Clients calling this function must replace the `\\{id\\}` substring with the\n actual token type ID."
            },
            "functionSelector": "0e89341c",
            "id": 2350,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "uri",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2343,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2938:8:5"
            },
            "parameters": {
              "id": 2342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2341,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2350,
                  "src": "2915:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2340,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2915:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2914:9:5"
            },
            "returnParameters": {
              "id": 2346,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2345,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2350,
                  "src": "2956:13:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2344,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2956:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2955:15:5"
            },
            "scope": 3296,
            "src": "2902:97:5",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              4728
            ],
            "body": {
              "id": 2377,
              "nodeType": "Block",
              "src": "3236:133:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2362,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2353,
                          "src": "3254:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3273:1:5",
                              "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": 2364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3265:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2363,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3265:7:5",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3265:10:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "3254:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                        "id": 2368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3277:45:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9",
                          "typeString": "literal_string \"ERC1155: balance query for the zero address\""
                        },
                        "value": "ERC1155: balance query for the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9",
                          "typeString": "literal_string \"ERC1155: balance query for the zero address\""
                        }
                      ],
                      "id": 2361,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3246:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3246:77:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2370,
                  "nodeType": "ExpressionStatement",
                  "src": "3246:77:5"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 2371,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2305,
                        "src": "3340:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                          "typeString": "mapping(uint256 => mapping(address => uint256))"
                        }
                      },
                      "id": 2373,
                      "indexExpression": {
                        "id": 2372,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2355,
                        "src": "3350:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3340:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 2375,
                    "indexExpression": {
                      "id": 2374,
                      "name": "account",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2353,
                      "src": "3354:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3340:22:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2360,
                  "id": 2376,
                  "nodeType": "Return",
                  "src": "3333:29:5"
                }
              ]
            },
            "documentation": {
              "id": 2351,
              "nodeType": "StructuredDocumentation",
              "src": "3005:131:5",
              "text": " @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address."
            },
            "functionSelector": "00fdd58e",
            "id": 2378,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2357,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3209:8:5"
            },
            "parameters": {
              "id": 2356,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2353,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 2378,
                  "src": "3160:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2352,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3160:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2355,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2378,
                  "src": "3177:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2354,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3177:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3159:29:5"
            },
            "returnParameters": {
              "id": 2360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2359,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2378,
                  "src": "3227:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3227:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3226:9:5"
            },
            "scope": 3296,
            "src": "3141:228:5",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4741
            ],
            "body": {
              "id": 2454,
              "nodeType": "Block",
              "src": "3721:436:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2397,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 2393,
                            "name": "accounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2382,
                            "src": "3739:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 2394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3739:15:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 2395,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2385,
                            "src": "3758:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3758:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3739:29:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368",
                        "id": 2398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3770:43:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                          "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                        },
                        "value": "ERC1155: accounts and ids length mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                          "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                        }
                      ],
                      "id": 2392,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3731:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3731:83:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2400,
                  "nodeType": "ExpressionStatement",
                  "src": "3731:83:5"
                },
                {
                  "assignments": [
                    2405
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2405,
                      "mutability": "mutable",
                      "name": "batchBalances",
                      "nodeType": "VariableDeclaration",
                      "scope": 2454,
                      "src": "3825:30:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2403,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3825:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2404,
                        "nodeType": "ArrayTypeName",
                        "src": "3825:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2412,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 2409,
                          "name": "accounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2382,
                          "src": "3872:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 2410,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "3872:15:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2408,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3858:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2406,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3862:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2407,
                        "nodeType": "ArrayTypeName",
                        "src": "3862:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 2411,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3858:30:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3825:63:5"
                },
                {
                  "body": {
                    "id": 2450,
                    "nodeType": "Block",
                    "src": "3945:175:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 2432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 2425,
                                  "name": "accounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2382,
                                  "src": "3967:8:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 2427,
                                "indexExpression": {
                                  "id": 2426,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2414,
                                  "src": "3976:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3967:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 2430,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3990:1:5",
                                    "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": 2429,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3982:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2428,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3982:7:5",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 2431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3982:10:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3967:25:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                              "id": 2433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3994:51:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1fbbb69d10332726591dc7ee4a23a94661eda2bec5ce6bf93a68249147dc8d9c",
                                "typeString": "literal_string \"ERC1155: batch balance query for the zero address\""
                              },
                              "value": "ERC1155: batch balance query for the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1fbbb69d10332726591dc7ee4a23a94661eda2bec5ce6bf93a68249147dc8d9c",
                                "typeString": "literal_string \"ERC1155: batch balance query for the zero address\""
                              }
                            ],
                            "id": 2424,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "3959:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3959:87:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2435,
                        "nodeType": "ExpressionStatement",
                        "src": "3959:87:5"
                      },
                      {
                        "expression": {
                          "id": 2448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2436,
                              "name": "batchBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2405,
                              "src": "4060:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 2438,
                            "indexExpression": {
                              "id": 2437,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2414,
                              "src": "4074:1:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4060:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 2439,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2305,
                                "src": "4079:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2443,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 2440,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2385,
                                  "src": "4089:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2442,
                                "indexExpression": {
                                  "id": 2441,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2414,
                                  "src": "4093:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4089:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4079:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2447,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 2444,
                                "name": "accounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2382,
                                "src": "4097:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 2446,
                              "indexExpression": {
                                "id": 2445,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2414,
                                "src": "4106:1:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4097:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4079:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4060:49:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2449,
                        "nodeType": "ExpressionStatement",
                        "src": "4060:49:5"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2417,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2414,
                      "src": "3919:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 2418,
                        "name": "accounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2382,
                        "src": "3923:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 2419,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3923:15:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3919:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2451,
                  "initializationExpression": {
                    "assignments": [
                      2414
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2414,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2451,
                        "src": "3904:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2413,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3904:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2416,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2415,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3916:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3904:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2422,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "3940:3:5",
                      "subExpression": {
                        "id": 2421,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2414,
                        "src": "3942:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2423,
                    "nodeType": "ExpressionStatement",
                    "src": "3940:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "3899:221:5"
                },
                {
                  "expression": {
                    "id": 2452,
                    "name": "batchBalances",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2405,
                    "src": "4137:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 2391,
                  "id": 2453,
                  "nodeType": "Return",
                  "src": "4130:20:5"
                }
              ]
            },
            "documentation": {
              "id": 2379,
              "nodeType": "StructuredDocumentation",
              "src": "3375:146:5",
              "text": " @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length."
            },
            "functionSelector": "4e1273f4",
            "id": 2455,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOfBatch",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2387,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3673:8:5"
            },
            "parameters": {
              "id": 2386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2382,
                  "mutability": "mutable",
                  "name": "accounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 2455,
                  "src": "3559:25:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2380,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3559:7:5",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 2381,
                    "nodeType": "ArrayTypeName",
                    "src": "3559:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2385,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 2455,
                  "src": "3594:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2383,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3594:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2384,
                    "nodeType": "ArrayTypeName",
                    "src": "3594:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3549:71:5"
            },
            "returnParameters": {
              "id": 2391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2390,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2455,
                  "src": "3699:16:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2388,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3699:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2389,
                    "nodeType": "ArrayTypeName",
                    "src": "3699:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3698:18:5"
            },
            "scope": 3296,
            "src": "3526:631:5",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4749
            ],
            "body": {
              "id": 2488,
              "nodeType": "Block",
              "src": "4309:222:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2465,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4312,
                            "src": "4327:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4327:12:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 2467,
                          "name": "operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2458,
                          "src": "4343:8:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4327:24:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66",
                        "id": 2469,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4353:43:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                          "typeString": "literal_string \"ERC1155: setting approval status for self\""
                        },
                        "value": "ERC1155: setting approval status for self"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                          "typeString": "literal_string \"ERC1155: setting approval status for self\""
                        }
                      ],
                      "id": 2464,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "4319:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4319:78:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2471,
                  "nodeType": "ExpressionStatement",
                  "src": "4319:78:5"
                },
                {
                  "expression": {
                    "id": 2479,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 2472,
                          "name": "_operatorApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2311,
                          "src": "4408:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                            "typeString": "mapping(address => mapping(address => bool))"
                          }
                        },
                        "id": 2476,
                        "indexExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2473,
                            "name": "_msgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4312,
                            "src": "4427:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                              "typeString": "function () view returns (address payable)"
                            }
                          },
                          "id": 2474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4427:12:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4408:32:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2477,
                      "indexExpression": {
                        "id": 2475,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2458,
                        "src": "4441:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4408:42:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2478,
                      "name": "approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2460,
                      "src": "4453:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4408:53:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2480,
                  "nodeType": "ExpressionStatement",
                  "src": "4408:53:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 2482,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4312,
                          "src": "4491:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                            "typeString": "function () view returns (address payable)"
                          }
                        },
                        "id": 2483,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4491:12:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2484,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2458,
                        "src": "4505:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2485,
                        "name": "approved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2460,
                        "src": "4515:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 2481,
                      "name": "ApprovalForAll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4711,
                      "src": "4476:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,bool)"
                      }
                    },
                    "id": 2486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4476:48:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2487,
                  "nodeType": "EmitStatement",
                  "src": "4471:53:5"
                }
              ]
            },
            "documentation": {
              "id": 2456,
              "nodeType": "StructuredDocumentation",
              "src": "4163:57:5",
              "text": " @dev See {IERC1155-setApprovalForAll}."
            },
            "functionSelector": "a22cb465",
            "id": 2489,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setApprovalForAll",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2462,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4300:8:5"
            },
            "parameters": {
              "id": 2461,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2458,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2489,
                  "src": "4252:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2457,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4252:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2460,
                  "mutability": "mutable",
                  "name": "approved",
                  "nodeType": "VariableDeclaration",
                  "scope": 2489,
                  "src": "4270:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2459,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4270:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4251:33:5"
            },
            "returnParameters": {
              "id": 2463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4309:0:5"
            },
            "scope": 3296,
            "src": "4225:306:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4759
            ],
            "body": {
              "id": 2506,
              "nodeType": "Block",
              "src": "4703:61:5",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 2500,
                        "name": "_operatorApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2311,
                        "src": "4720:18:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                          "typeString": "mapping(address => mapping(address => bool))"
                        }
                      },
                      "id": 2502,
                      "indexExpression": {
                        "id": 2501,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2492,
                        "src": "4739:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4720:27:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 2504,
                    "indexExpression": {
                      "id": 2503,
                      "name": "operator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2494,
                      "src": "4748:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4720:37:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 2499,
                  "id": 2505,
                  "nodeType": "Return",
                  "src": "4713:44:5"
                }
              ]
            },
            "documentation": {
              "id": 2490,
              "nodeType": "StructuredDocumentation",
              "src": "4537:56:5",
              "text": " @dev See {IERC1155-isApprovedForAll}."
            },
            "functionSelector": "e985e9c5",
            "id": 2507,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isApprovedForAll",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2496,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4679:8:5"
            },
            "parameters": {
              "id": 2495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2492,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 2507,
                  "src": "4624:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2491,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4624:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2494,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 2507,
                  "src": "4641:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2493,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4641:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4623:35:5"
            },
            "returnParameters": {
              "id": 2499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2498,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2507,
                  "src": "4697:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2497,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4697:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4696:6:5"
            },
            "scope": 3296,
            "src": "4598:166:5",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4773
            ],
            "body": {
              "id": 2612,
              "nodeType": "Block",
              "src": "5028:700:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2523,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2512,
                          "src": "5046:2:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5060:1:5",
                              "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": 2525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5052:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2524,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5052:7:5",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5052:10:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "5046:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                        "id": 2529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5064:39:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                          "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                        },
                        "value": "ERC1155: transfer to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                          "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                        }
                      ],
                      "id": 2522,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5038:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5038:66:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2531,
                  "nodeType": "ExpressionStatement",
                  "src": "5038:66:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2542,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2533,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2510,
                            "src": "5135:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2534,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4312,
                              "src": "5143:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 2535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5143:12:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "5135:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 2538,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2510,
                              "src": "5176:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2539,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4312,
                                "src": "5182:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5182:12:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2537,
                            "name": "isApprovedForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2507,
                            "src": "5159:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5159:36:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5135:60:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                        "id": 2543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5209:43:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                          "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                        },
                        "value": "ERC1155: caller is not owner nor approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                          "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                        }
                      ],
                      "id": 2532,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5114:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5114:148:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2545,
                  "nodeType": "ExpressionStatement",
                  "src": "5114:148:5"
                },
                {
                  "assignments": [
                    2547
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2547,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 2612,
                      "src": "5273:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2546,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5273:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2550,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2548,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4312,
                      "src": "5292:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                        "typeString": "function () view returns (address payable)"
                      }
                    },
                    "id": 2549,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5292:12:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5273:31:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2552,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2547,
                        "src": "5336:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2553,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2510,
                        "src": "5346:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2554,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2512,
                        "src": "5352:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2556,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2514,
                            "src": "5374:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2555,
                          "name": "_asSingletonArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3295,
                          "src": "5356:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (uint256[] memory)"
                          }
                        },
                        "id": 2557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5356:21:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2559,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2516,
                            "src": "5397:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2558,
                          "name": "_asSingletonArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3295,
                          "src": "5379:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (uint256[] memory)"
                          }
                        },
                        "id": 2560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5379:25:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2561,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2518,
                        "src": "5406:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2551,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3135,
                      "src": "5315:20:5",
                      "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": 2562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5315:96:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2563,
                  "nodeType": "ExpressionStatement",
                  "src": "5315:96:5"
                },
                {
                  "expression": {
                    "id": 2578,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 2564,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2305,
                          "src": "5422:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 2567,
                        "indexExpression": {
                          "id": 2565,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2514,
                          "src": "5432:2:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5422:13:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2568,
                      "indexExpression": {
                        "id": 2566,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2510,
                        "src": "5436:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5422:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2575,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2516,
                          "src": "5468:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                          "id": 2576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5476:44:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                            "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                          },
                          "value": "ERC1155: insufficient balance for transfer"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                            "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                          }
                        ],
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 2569,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2305,
                              "src": "5444:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2571,
                            "indexExpression": {
                              "id": 2570,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2514,
                              "src": "5454:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5444:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2573,
                          "indexExpression": {
                            "id": 2572,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2510,
                            "src": "5458:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5444:19:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4467,
                        "src": "5444:23:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                        }
                      },
                      "id": 2577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5444:77:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5422:99:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2579,
                  "nodeType": "ExpressionStatement",
                  "src": "5422:99:5"
                },
                {
                  "expression": {
                    "id": 2593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 2580,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2305,
                          "src": "5531:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 2583,
                        "indexExpression": {
                          "id": 2581,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2514,
                          "src": "5541:2:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5531:13:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2584,
                      "indexExpression": {
                        "id": 2582,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2512,
                        "src": "5545:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5531:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2591,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2516,
                          "src": "5573:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 2585,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2305,
                              "src": "5551:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2587,
                            "indexExpression": {
                              "id": 2586,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2514,
                              "src": "5561:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5551:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2589,
                          "indexExpression": {
                            "id": 2588,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2512,
                            "src": "5565:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5551:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4422,
                        "src": "5551:21:5",
                        "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": 2592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5551:29:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5531:49:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2594,
                  "nodeType": "ExpressionStatement",
                  "src": "5531:49:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2596,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2547,
                        "src": "5611:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2597,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2510,
                        "src": "5621:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2598,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2512,
                        "src": "5627:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2599,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2514,
                        "src": "5631:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2600,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2516,
                        "src": "5635:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2595,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4687,
                      "src": "5596:14:5",
                      "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": 2601,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5596:46:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2602,
                  "nodeType": "EmitStatement",
                  "src": "5591:51:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2604,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2547,
                        "src": "5684:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2605,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2510,
                        "src": "5694:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2606,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2512,
                        "src": "5700:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2607,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2514,
                        "src": "5704:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2608,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2516,
                        "src": "5708:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2609,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2518,
                        "src": "5716:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 2603,
                      "name": "_doSafeTransferAcceptanceCheck",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3200,
                      "src": "5653:30:5",
                      "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": 2610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5653:68:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2611,
                  "nodeType": "ExpressionStatement",
                  "src": "5653:68:5"
                }
              ]
            },
            "documentation": {
              "id": 2508,
              "nodeType": "StructuredDocumentation",
              "src": "4770:56:5",
              "text": " @dev See {IERC1155-safeTransferFrom}."
            },
            "functionSelector": "f242432a",
            "id": 2613,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2520,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5015:8:5"
            },
            "parameters": {
              "id": 2519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2510,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2613,
                  "src": "4866:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2509,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4866:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2512,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2613,
                  "src": "4888:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2511,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4888:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2514,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2613,
                  "src": "4908:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2513,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4908:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2516,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2613,
                  "src": "4928:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2515,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4928:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2518,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2613,
                  "src": "4952:17:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2517,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4952:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4856:119:5"
            },
            "returnParameters": {
              "id": 2521,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5028:0:5"
            },
            "scope": 3296,
            "src": "4831:897:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              4789
            ],
            "body": {
              "id": 2750,
              "nodeType": "Block",
              "src": "6022:962:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 2631,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2621,
                            "src": "6040:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6040:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 2633,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2624,
                            "src": "6054:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "6054:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6040:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                        "id": 2636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6070:42:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                          "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                        },
                        "value": "ERC1155: ids and amounts length mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                          "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                        }
                      ],
                      "id": 2630,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6032:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6032:81:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2638,
                  "nodeType": "ExpressionStatement",
                  "src": "6032:81:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2645,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2640,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2618,
                          "src": "6131:2:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6145:1:5",
                              "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": 2642,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6137:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2641,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6137:7:5",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6137:10:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "6131:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                        "id": 2646,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6149:39:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                          "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                        },
                        "value": "ERC1155: transfer to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                          "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                        }
                      ],
                      "id": 2639,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6123:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2647,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6123:66:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2648,
                  "nodeType": "ExpressionStatement",
                  "src": "6123:66:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 2653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2650,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2616,
                            "src": "6220:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 2651,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4312,
                              "src": "6228:10:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                "typeString": "function () view returns (address payable)"
                              }
                            },
                            "id": 2652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6228:12:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "6220:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 2655,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2616,
                              "src": "6261:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 2656,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4312,
                                "src": "6267:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                                  "typeString": "function () view returns (address payable)"
                                }
                              },
                              "id": 2657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6267:12:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 2654,
                            "name": "isApprovedForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2507,
                            "src": "6244:16:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 2658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6244:36:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6220:60:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                        "id": 2660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6294:52:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686",
                          "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\""
                        },
                        "value": "ERC1155: transfer caller is not owner nor approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686",
                          "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\""
                        }
                      ],
                      "id": 2649,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6199:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6199:157:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2662,
                  "nodeType": "ExpressionStatement",
                  "src": "6199:157:5"
                },
                {
                  "assignments": [
                    2664
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2664,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 2750,
                      "src": "6367:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2663,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6367:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2667,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2665,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4312,
                      "src": "6386:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                        "typeString": "function () view returns (address payable)"
                      }
                    },
                    "id": 2666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6386:12:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6367:31:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2669,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2664,
                        "src": "6430:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2670,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2616,
                        "src": "6440:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2671,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2618,
                        "src": "6446:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2672,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2621,
                        "src": "6450:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2673,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2624,
                        "src": "6455:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2674,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2626,
                        "src": "6464:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2668,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3135,
                      "src": "6409:20:5",
                      "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": 2675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6409:60:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2676,
                  "nodeType": "ExpressionStatement",
                  "src": "6409:60:5"
                },
                {
                  "body": {
                    "id": 2731,
                    "nodeType": "Block",
                    "src": "6521:308:5",
                    "statements": [
                      {
                        "assignments": [
                          2689
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2689,
                            "mutability": "mutable",
                            "name": "id",
                            "nodeType": "VariableDeclaration",
                            "scope": 2731,
                            "src": "6535:10:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2688,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6535:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2693,
                        "initialValue": {
                          "baseExpression": {
                            "id": 2690,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2621,
                            "src": "6548:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2692,
                          "indexExpression": {
                            "id": 2691,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2678,
                            "src": "6552:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6548:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6535:19:5"
                      },
                      {
                        "assignments": [
                          2695
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2695,
                            "mutability": "mutable",
                            "name": "amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2731,
                            "src": "6568:14:5",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2694,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6568:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2699,
                        "initialValue": {
                          "baseExpression": {
                            "id": 2696,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2624,
                            "src": "6585:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2698,
                          "indexExpression": {
                            "id": 2697,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2678,
                            "src": "6593:1:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6585:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6568:27:5"
                      },
                      {
                        "expression": {
                          "id": 2714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 2700,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2305,
                                "src": "6610:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2703,
                              "indexExpression": {
                                "id": 2701,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2689,
                                "src": "6620:2:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6610:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2704,
                            "indexExpression": {
                              "id": 2702,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2616,
                              "src": "6624:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6610:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2711,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2695,
                                "src": "6673:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                                "id": 2712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6697:44:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                  "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                },
                                "value": "ERC1155: insufficient balance for transfer"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                  "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 2705,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2305,
                                    "src": "6632:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 2707,
                                  "indexExpression": {
                                    "id": 2706,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2689,
                                    "src": "6642:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6632:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 2709,
                                "indexExpression": {
                                  "id": 2708,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2616,
                                  "src": "6646:4:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6632:19:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4467,
                              "src": "6632:23:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 2713,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6632:123:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6610:145:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2715,
                        "nodeType": "ExpressionStatement",
                        "src": "6610:145:5"
                      },
                      {
                        "expression": {
                          "id": 2729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 2716,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2305,
                                "src": "6769:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2719,
                              "indexExpression": {
                                "id": 2717,
                                "name": "id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2689,
                                "src": "6779:2:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6769:13:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2720,
                            "indexExpression": {
                              "id": 2718,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2618,
                              "src": "6783:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6769:17:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2727,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2695,
                                "src": "6811:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 2721,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2305,
                                    "src": "6789:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 2723,
                                  "indexExpression": {
                                    "id": 2722,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2689,
                                    "src": "6799:2:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6789:13:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 2725,
                                "indexExpression": {
                                  "id": 2724,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2618,
                                  "src": "6803:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6789:17:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4422,
                              "src": "6789:21:5",
                              "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": 2728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6789:29:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6769:49:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2730,
                        "nodeType": "ExpressionStatement",
                        "src": "6769:49:5"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2681,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2678,
                      "src": "6500:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 2682,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2621,
                        "src": "6504:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2683,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6504:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6500:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2732,
                  "initializationExpression": {
                    "assignments": [
                      2678
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2678,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2732,
                        "src": "6485:9:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2677,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6485:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2680,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2679,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6497:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6485:13:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2686,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "6516:3:5",
                      "subExpression": {
                        "id": 2685,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2678,
                        "src": "6518:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2687,
                    "nodeType": "ExpressionStatement",
                    "src": "6516:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "6480:349:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2734,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2664,
                        "src": "6858:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2735,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2616,
                        "src": "6868:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2736,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2618,
                        "src": "6874:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2737,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2621,
                        "src": "6878:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2738,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2624,
                        "src": "6883:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2733,
                      "name": "TransferBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4702,
                      "src": "6844:13:5",
                      "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": 2739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6844:47:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2740,
                  "nodeType": "EmitStatement",
                  "src": "6839:52:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2742,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2664,
                        "src": "6938:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2743,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2616,
                        "src": "6948:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2744,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2618,
                        "src": "6954:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2745,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2621,
                        "src": "6958:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2746,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2624,
                        "src": "6963:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2747,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2626,
                        "src": "6972:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2741,
                      "name": "_doSafeBatchTransferAcceptanceCheck",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3267,
                      "src": "6902:35:5",
                      "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": 2748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6902:75:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2749,
                  "nodeType": "ExpressionStatement",
                  "src": "6902:75:5"
                }
              ]
            },
            "documentation": {
              "id": 2614,
              "nodeType": "StructuredDocumentation",
              "src": "5734:61:5",
              "text": " @dev See {IERC1155-safeBatchTransferFrom}."
            },
            "functionSelector": "2eb2c2d6",
            "id": 2751,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeBatchTransferFrom",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2628,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6009:8:5"
            },
            "parameters": {
              "id": 2627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2616,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 2751,
                  "src": "5840:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2615,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5840:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2618,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2751,
                  "src": "5862:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2617,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5862:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2621,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 2751,
                  "src": "5882:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2619,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5882:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2620,
                    "nodeType": "ArrayTypeName",
                    "src": "5882:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2624,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 2751,
                  "src": "5912:24:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2622,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5912:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2623,
                    "nodeType": "ArrayTypeName",
                    "src": "5912:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2626,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2751,
                  "src": "5946:17:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2625,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5946:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5830:139:5"
            },
            "returnParameters": {
              "id": 2629,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6022:0:5"
            },
            "scope": 3296,
            "src": "5800:1184:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2761,
              "nodeType": "Block",
              "src": "7863:30:5",
              "statements": [
                {
                  "expression": {
                    "id": 2759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2757,
                      "name": "_uri",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2313,
                      "src": "7873:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2758,
                      "name": "newuri",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2754,
                      "src": "7880:6:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "7873:13:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 2760,
                  "nodeType": "ExpressionStatement",
                  "src": "7873:13:5"
                }
              ]
            },
            "documentation": {
              "id": 2752,
              "nodeType": "StructuredDocumentation",
              "src": "6990:812:5",
              "text": " @dev Sets a new URI for all token types, by relying on the token type ID\n substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n URI or any of the amounts in the JSON file at said URI will be replaced by\n clients with the token type ID.\n For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n interpreted by clients as\n `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n for token type ID 0x4cce0.\n See {uri}.\n Because these URIs cannot be meaningfully represented by the {URI} event,\n this function emits no events."
            },
            "id": 2762,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setURI",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2755,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2754,
                  "mutability": "mutable",
                  "name": "newuri",
                  "nodeType": "VariableDeclaration",
                  "scope": 2762,
                  "src": "7824:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 2753,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7824:6:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7823:22:5"
            },
            "returnParameters": {
              "id": 2756,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7863:0:5"
            },
            "scope": 3296,
            "src": "7807:86:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2843,
              "nodeType": "Block",
              "src": "8372:476:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2780,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2775,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2765,
                          "src": "8390:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2778,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8409:1:5",
                              "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": 2777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8401:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2776,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8401:7:5",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8401:10:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "8390:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 2781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8413:35:5",
                        "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": 2774,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "8382:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2782,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8382:67:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2783,
                  "nodeType": "ExpressionStatement",
                  "src": "8382:67:5"
                },
                {
                  "assignments": [
                    2785
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2785,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 2843,
                      "src": "8460:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2784,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8460:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2788,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2786,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4312,
                      "src": "8479:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                        "typeString": "function () view returns (address payable)"
                      }
                    },
                    "id": 2787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8479:12:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8460:31:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2790,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2785,
                        "src": "8523:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 2793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8541:1:5",
                            "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": 2792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8533:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2791,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8533:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8533:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2795,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2765,
                        "src": "8545:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2797,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2767,
                            "src": "8572:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2796,
                          "name": "_asSingletonArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3295,
                          "src": "8554:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (uint256[] memory)"
                          }
                        },
                        "id": 2798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8554:21:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2800,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2769,
                            "src": "8595:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2799,
                          "name": "_asSingletonArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3295,
                          "src": "8577:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (uint256[] memory)"
                          }
                        },
                        "id": 2801,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8577:25:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2802,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2771,
                        "src": "8604:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2789,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3135,
                      "src": "8502:20:5",
                      "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": 2803,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8502:107:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2804,
                  "nodeType": "ExpressionStatement",
                  "src": "8502:107:5"
                },
                {
                  "expression": {
                    "id": 2818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 2805,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2305,
                          "src": "8620:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 2808,
                        "indexExpression": {
                          "id": 2806,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2767,
                          "src": "8630:2:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8620:13:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2809,
                      "indexExpression": {
                        "id": 2807,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2765,
                        "src": "8634:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8620:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2816,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2769,
                          "src": "8672:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 2810,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2305,
                              "src": "8645:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 2812,
                            "indexExpression": {
                              "id": 2811,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2767,
                              "src": "8655:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8645:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2814,
                          "indexExpression": {
                            "id": 2813,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2765,
                            "src": "8659:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8645:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4422,
                        "src": "8645:26:5",
                        "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": 2817,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8645:34:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8620:59:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2819,
                  "nodeType": "ExpressionStatement",
                  "src": "8620:59:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2821,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2785,
                        "src": "8709:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 2824,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8727:1:5",
                            "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": 2823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8719:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2822,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8719:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8719:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2826,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2765,
                        "src": "8731:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2827,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2767,
                        "src": "8740:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2828,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2769,
                        "src": "8744:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2820,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4687,
                      "src": "8694:14:5",
                      "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": 2829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8694:57:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2830,
                  "nodeType": "EmitStatement",
                  "src": "8689:62:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2832,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2785,
                        "src": "8793:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 2835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8811:1:5",
                            "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": 2834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8803:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2833,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8803:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8803:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2837,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2765,
                        "src": "8815:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2838,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2767,
                        "src": "8824:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2839,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2769,
                        "src": "8828:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 2840,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2771,
                        "src": "8836:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2831,
                      "name": "_doSafeTransferAcceptanceCheck",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3200,
                      "src": "8762:30:5",
                      "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": 2841,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8762:79:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2842,
                  "nodeType": "ExpressionStatement",
                  "src": "8762:79:5"
                }
              ]
            },
            "documentation": {
              "id": 2763,
              "nodeType": "StructuredDocumentation",
              "src": "7899:372:5",
              "text": " @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.\n Emits a {TransferSingle} event.\n Requirements:\n - `account` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."
            },
            "id": 2844,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2772,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2765,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 2844,
                  "src": "8291:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2764,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8291:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2767,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 2844,
                  "src": "8308:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2766,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8308:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2769,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2844,
                  "src": "8320:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2768,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8320:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2771,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2844,
                  "src": "8336:17:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2770,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8336:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8290:64:5"
            },
            "returnParameters": {
              "id": 2773,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8372:0:5"
            },
            "scope": 3296,
            "src": "8276:572:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2951,
              "nodeType": "Block",
              "src": "9309:584:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2859,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2847,
                          "src": "9327:2:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9341:1:5",
                              "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": 2861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9333:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2860,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9333:7:5",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9333:10:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "9327:16:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 2865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9345:35:5",
                        "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": 2858,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9319:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9319:62:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2867,
                  "nodeType": "ExpressionStatement",
                  "src": "9319:62:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 2869,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2850,
                            "src": "9399:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "9399:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 2871,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2853,
                            "src": "9413:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 2872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "9413:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9399:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                        "id": 2874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9429:42:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                          "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                        },
                        "value": "ERC1155: ids and amounts length mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                          "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                        }
                      ],
                      "id": 2868,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9391:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2875,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9391:81:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2876,
                  "nodeType": "ExpressionStatement",
                  "src": "9391:81:5"
                },
                {
                  "assignments": [
                    2878
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2878,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 2951,
                      "src": "9483:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2877,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9483:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2881,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2879,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4312,
                      "src": "9502:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                        "typeString": "function () view returns (address payable)"
                      }
                    },
                    "id": 2880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9502:12:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9483:31:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2883,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2878,
                        "src": "9546:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 2886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9564:1:5",
                            "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": 2885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9556:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2884,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9556:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9556:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2888,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2847,
                        "src": "9568:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2889,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2850,
                        "src": "9572:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2890,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2853,
                        "src": "9577:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2891,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2855,
                        "src": "9586:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2882,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3135,
                      "src": "9525:20:5",
                      "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": 2892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9525:66:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2893,
                  "nodeType": "ExpressionStatement",
                  "src": "9525:66:5"
                },
                {
                  "body": {
                    "id": 2926,
                    "nodeType": "Block",
                    "src": "9640:86:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 2924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 2905,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2305,
                                "src": "9654:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 2910,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 2906,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2850,
                                  "src": "9664:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2908,
                                "indexExpression": {
                                  "id": 2907,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2895,
                                  "src": "9668:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9664:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9654:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 2911,
                            "indexExpression": {
                              "id": 2909,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2847,
                              "src": "9672:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "9654:21:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 2916,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2305,
                                    "src": "9693:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 2920,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 2917,
                                      "name": "ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2850,
                                      "src": "9703:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 2919,
                                    "indexExpression": {
                                      "id": 2918,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2895,
                                      "src": "9707:1:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9703:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9693:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 2922,
                                "indexExpression": {
                                  "id": 2921,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "9711:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9693:21:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "id": 2912,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2853,
                                  "src": "9678:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 2914,
                                "indexExpression": {
                                  "id": 2913,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2895,
                                  "src": "9686:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9678:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4422,
                              "src": "9678:14:5",
                              "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": 2923,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9678:37:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9654:61:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2925,
                        "nodeType": "ExpressionStatement",
                        "src": "9654:61:5"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 2901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2898,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2895,
                      "src": "9619:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 2899,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2850,
                        "src": "9623:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 2900,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "9623:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9619:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2927,
                  "initializationExpression": {
                    "assignments": [
                      2895
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 2895,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 2927,
                        "src": "9607:6:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2894,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9607:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 2897,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 2896,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9616:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9607:10:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 2903,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9635:3:5",
                      "subExpression": {
                        "id": 2902,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2895,
                        "src": "9635:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2904,
                    "nodeType": "ExpressionStatement",
                    "src": "9635:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "9602:124:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 2929,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2878,
                        "src": "9755:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 2932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9773:1:5",
                            "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": 2931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9765:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2930,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9765:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2933,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9765:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2934,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2847,
                        "src": "9777:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2935,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2850,
                        "src": "9781:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2936,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2853,
                        "src": "9786:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2928,
                      "name": "TransferBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4702,
                      "src": "9741:13:5",
                      "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": 2937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9741:53:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2938,
                  "nodeType": "EmitStatement",
                  "src": "9736:58:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2940,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2878,
                        "src": "9841:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 2943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9859:1:5",
                            "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": 2942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9851:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2941,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9851:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9851:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 2945,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2847,
                        "src": "9863:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2946,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2850,
                        "src": "9867:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2947,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2853,
                        "src": "9872:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 2948,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2855,
                        "src": "9881:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 2939,
                      "name": "_doSafeBatchTransferAcceptanceCheck",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3267,
                      "src": "9805:35:5",
                      "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": 2949,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9805:81:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2950,
                  "nodeType": "ExpressionStatement",
                  "src": "9805:81:5"
                }
              ]
            },
            "documentation": {
              "id": 2845,
              "nodeType": "StructuredDocumentation",
              "src": "8854:334:5",
              "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."
            },
            "id": 2952,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mintBatch",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2847,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 2952,
                  "src": "9213:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2846,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9213:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2850,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 2952,
                  "src": "9225:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2848,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9225:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2849,
                    "nodeType": "ArrayTypeName",
                    "src": "9225:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2853,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 2952,
                  "src": "9247:24:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 2851,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "9247:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 2852,
                    "nodeType": "ArrayTypeName",
                    "src": "9247:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2855,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2952,
                  "src": "9273:17:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2854,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "9273:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9212:79:5"
            },
            "returnParameters": {
              "id": 2857,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9309:0:5"
            },
            "scope": 3296,
            "src": "9193:700:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3020,
              "nodeType": "Block",
              "src": "10219:461:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2963,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2955,
                          "src": "10237:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10256:1:5",
                              "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": 2965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10248:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2964,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10248:7:5",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10248:10:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "10237:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373",
                        "id": 2969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10260:37:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                          "typeString": "literal_string \"ERC1155: burn from the zero address\""
                        },
                        "value": "ERC1155: burn from the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                          "typeString": "literal_string \"ERC1155: burn from the zero address\""
                        }
                      ],
                      "id": 2962,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "10229:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10229:69:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2971,
                  "nodeType": "ExpressionStatement",
                  "src": "10229:69:5"
                },
                {
                  "assignments": [
                    2973
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2973,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 3020,
                      "src": "10309:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2972,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10309:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2976,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 2974,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4312,
                      "src": "10328:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                        "typeString": "function () view returns (address payable)"
                      }
                    },
                    "id": 2975,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10328:12:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10309:31:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2978,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2973,
                        "src": "10372:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2979,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2955,
                        "src": "10382:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 2982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10399:1:5",
                            "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": 2981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10391:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2980,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10391:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2983,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10391:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2985,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2957,
                            "src": "10421:2:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2984,
                          "name": "_asSingletonArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3295,
                          "src": "10403:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (uint256[] memory)"
                          }
                        },
                        "id": 2986,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10403:21:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2988,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2959,
                            "src": "10444:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2987,
                          "name": "_asSingletonArray",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3295,
                          "src": "10426:17:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (uint256[] memory)"
                          }
                        },
                        "id": 2989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10426:25:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 2990,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10453:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 2977,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3135,
                      "src": "10351:20:5",
                      "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": 2991,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10351:105:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2992,
                  "nodeType": "ExpressionStatement",
                  "src": "10351:105:5"
                },
                {
                  "expression": {
                    "id": 3007,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 2993,
                          "name": "_balances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2305,
                          "src": "10467:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(uint256 => mapping(address => uint256))"
                          }
                        },
                        "id": 2996,
                        "indexExpression": {
                          "id": 2994,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2957,
                          "src": "10477:2:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "10467:13:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2997,
                      "indexExpression": {
                        "id": 2995,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2955,
                        "src": "10481:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10467:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 3004,
                          "name": "amount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2959,
                          "src": "10532:6:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365",
                          "id": 3005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10552:38:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                            "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                          },
                          "value": "ERC1155: burn amount exceeds balance"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                            "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                          }
                        ],
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 2998,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2305,
                              "src": "10492:9:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(uint256 => mapping(address => uint256))"
                              }
                            },
                            "id": 3000,
                            "indexExpression": {
                              "id": 2999,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2957,
                              "src": "10502:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10492:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 3002,
                          "indexExpression": {
                            "id": 3001,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2955,
                            "src": "10506:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10492:22:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 4467,
                        "src": "10492:26:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                        }
                      },
                      "id": 3006,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10492:108:5",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "10467:133:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3008,
                  "nodeType": "ExpressionStatement",
                  "src": "10467:133:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 3010,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2973,
                        "src": "10631:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3011,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2955,
                        "src": "10641:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10658:1:5",
                            "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": 3013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10650:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3012,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10650:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10650:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3016,
                        "name": "id",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2957,
                        "src": "10662:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3017,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2959,
                        "src": "10666:6:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 3009,
                      "name": "TransferSingle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4687,
                      "src": "10616:14:5",
                      "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": 3018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10616:57:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3019,
                  "nodeType": "EmitStatement",
                  "src": "10611:62:5"
                }
              ]
            },
            "documentation": {
              "id": 2953,
              "nodeType": "StructuredDocumentation",
              "src": "9899:238:5",
              "text": " @dev Destroys `amount` tokens of token type `id` from `account`\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens of token type `id`."
            },
            "id": 3021,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2955,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 3021,
                  "src": "10157:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2954,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10157:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2957,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3021,
                  "src": "10174:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2956,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10174:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2959,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3021,
                  "src": "10186:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2958,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10186:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10156:45:5"
            },
            "returnParameters": {
              "id": 2961,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10219:0:5"
            },
            "scope": 3296,
            "src": "10142:538:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3115,
              "nodeType": "Block",
              "src": "10976:603:5",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 3039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 3034,
                          "name": "account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3024,
                          "src": "10994:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 3037,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11013:1:5",
                              "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": 3036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11005:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 3035,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "11005:7:5",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 3038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11005:10:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "10994:21:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373",
                        "id": 3040,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11017:37:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                          "typeString": "literal_string \"ERC1155: burn from the zero address\""
                        },
                        "value": "ERC1155: burn from the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                          "typeString": "literal_string \"ERC1155: burn from the zero address\""
                        }
                      ],
                      "id": 3033,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "10986:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10986:69:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3042,
                  "nodeType": "ExpressionStatement",
                  "src": "10986:69:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 3044,
                            "name": "ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3027,
                            "src": "11073:3:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "11073:10:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "id": 3046,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3030,
                            "src": "11087:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "11087:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11073:28:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                        "id": 3049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11103:42:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                          "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                        },
                        "value": "ERC1155: ids and amounts length mismatch"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                          "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                        }
                      ],
                      "id": 3043,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "11065:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11065:81:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3051,
                  "nodeType": "ExpressionStatement",
                  "src": "11065:81:5"
                },
                {
                  "assignments": [
                    3053
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3053,
                      "mutability": "mutable",
                      "name": "operator",
                      "nodeType": "VariableDeclaration",
                      "scope": 3115,
                      "src": "11157:16:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3052,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11157:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3056,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 3054,
                      "name": "_msgSender",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4312,
                      "src": "11176:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$",
                        "typeString": "function () view returns (address payable)"
                      }
                    },
                    "id": 3055,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11176:12:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11157:31:5"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3058,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3053,
                        "src": "11220:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3059,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3024,
                        "src": "11230:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11247:1:5",
                            "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": 3061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11239:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3060,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11239:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11239:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3064,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3027,
                        "src": "11251:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 3065,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3030,
                        "src": "11256:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 3066,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11265:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 3057,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3135,
                      "src": "11199:20:5",
                      "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": 3067,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11199:69:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3068,
                  "nodeType": "ExpressionStatement",
                  "src": "11199:69:5"
                },
                {
                  "body": {
                    "id": 3102,
                    "nodeType": "Block",
                    "src": "11317:182:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 3100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 3080,
                                "name": "_balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2305,
                                "src": "11331:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(uint256 => mapping(address => uint256))"
                                }
                              },
                              "id": 3085,
                              "indexExpression": {
                                "baseExpression": {
                                  "id": 3081,
                                  "name": "ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3027,
                                  "src": "11341:3:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3083,
                                "indexExpression": {
                                  "id": 3082,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3070,
                                  "src": "11345:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11341:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11331:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3086,
                            "indexExpression": {
                              "id": 3084,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3024,
                              "src": "11349:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11331:26:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "id": 3095,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3030,
                                  "src": "11408:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3097,
                                "indexExpression": {
                                  "id": 3096,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3070,
                                  "src": "11416:1:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11408:10:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                "id": 3098,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11436:38:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                  "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                                },
                                "value": "ERC1155: burn amount exceeds balance"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                  "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 3087,
                                    "name": "_balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2305,
                                    "src": "11360:9:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(uint256 => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 3091,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 3088,
                                      "name": "ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3027,
                                      "src": "11370:3:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 3090,
                                    "indexExpression": {
                                      "id": 3089,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3070,
                                      "src": "11374:1:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11370:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "11360:17:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3093,
                                "indexExpression": {
                                  "id": 3092,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3024,
                                  "src": "11378:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "11360:26:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4467,
                              "src": "11360:30:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256,string memory) pure returns (uint256)"
                              }
                            },
                            "id": 3099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11360:128:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11331:157:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3101,
                        "nodeType": "ExpressionStatement",
                        "src": "11331:157:5"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 3076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 3073,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3070,
                      "src": "11296:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 3074,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3027,
                        "src": "11300:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 3075,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "11300:10:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11296:14:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3103,
                  "initializationExpression": {
                    "assignments": [
                      3070
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 3070,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "scope": 3103,
                        "src": "11284:6:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3069,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11284:4:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 3072,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 3071,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11293:1:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "11284:10:5"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 3078,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "11312:3:5",
                      "subExpression": {
                        "id": 3077,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3070,
                        "src": "11312:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3079,
                    "nodeType": "ExpressionStatement",
                    "src": "11312:3:5"
                  },
                  "nodeType": "ForStatement",
                  "src": "11279:220:5"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 3105,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3053,
                        "src": "11528:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 3106,
                        "name": "account",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3024,
                        "src": "11538:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 3109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11555:1:5",
                            "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": 3108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11547:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3107,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11547:7:5",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3110,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11547:10:5",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3111,
                        "name": "ids",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3027,
                        "src": "11559:3:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      {
                        "id": 3112,
                        "name": "amounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3030,
                        "src": "11564:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "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": 3104,
                      "name": "TransferBatch",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4702,
                      "src": "11514:13:5",
                      "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": 3113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11514:58:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3114,
                  "nodeType": "EmitStatement",
                  "src": "11509:63:5"
                }
              ]
            },
            "documentation": {
              "id": 3022,
              "nodeType": "StructuredDocumentation",
              "src": "10686:183:5",
              "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n Requirements:\n - `ids` and `amounts` must have the same length."
            },
            "id": 3116,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burnBatch",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3031,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3024,
                  "mutability": "mutable",
                  "name": "account",
                  "nodeType": "VariableDeclaration",
                  "scope": 3116,
                  "src": "10894:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3023,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10894:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3027,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 3116,
                  "src": "10911:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3025,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10911:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3026,
                    "nodeType": "ArrayTypeName",
                    "src": "10911:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3030,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 3116,
                  "src": "10933:24:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3028,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "10933:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3029,
                    "nodeType": "ArrayTypeName",
                    "src": "10933:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10893:65:5"
            },
            "returnParameters": {
              "id": 3032,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10976:0:5"
            },
            "scope": 3296,
            "src": "10874:705:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3134,
              "nodeType": "Block",
              "src": "12737:3:5",
              "statements": []
            },
            "documentation": {
              "id": 3117,
              "nodeType": "StructuredDocumentation",
              "src": "11585:923:5",
              "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `id` and `amount` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be  transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 3135,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3132,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3119,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3135,
                  "src": "12552:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3118,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12552:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3121,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3135,
                  "src": "12578:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3120,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12578:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3123,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 3135,
                  "src": "12600:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3122,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12600:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3126,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 3135,
                  "src": "12620:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3124,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12620:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3125,
                    "nodeType": "ArrayTypeName",
                    "src": "12620:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3129,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 3135,
                  "src": "12650:24:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3127,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "12650:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3128,
                    "nodeType": "ArrayTypeName",
                    "src": "12650:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3131,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 3135,
                  "src": "12684:17:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3130,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12684:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12542:165:5"
            },
            "returnParameters": {
              "id": 3133,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12737:0:5"
            },
            "scope": 3296,
            "src": "12513:227:5",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3199,
              "nodeType": "Block",
              "src": "12952:536:5",
              "statements": [
                {
                  "condition": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 3150,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3141,
                        "src": "12966:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3151,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6597,
                      "src": "12966:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 3152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12966:15:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3198,
                  "nodeType": "IfStatement",
                  "src": "12962:520:5",
                  "trueBody": {
                    "id": 3197,
                    "nodeType": "Block",
                    "src": "12983:499:5",
                    "statements": [
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 3179,
                              "nodeType": "Block",
                              "src": "13100:188:5",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 3172,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3166,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3164,
                                      "src": "13122:8:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "expression": {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 3168,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3141,
                                              "src": "13151:2:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 3167,
                                            "name": "IERC1155Receiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4846,
                                            "src": "13134:16:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$4846_$",
                                              "typeString": "type(contract IERC1155Receiver)"
                                            }
                                          },
                                          "id": 3169,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13134:20:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155Receiver_$4846",
                                            "typeString": "contract IERC1155Receiver"
                                          }
                                        },
                                        "id": 3170,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4827,
                                        "src": "13134:38:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 3171,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "src": "13134:47:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "13122:59:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 3178,
                                  "nodeType": "IfStatement",
                                  "src": "13118:156:5",
                                  "trueBody": {
                                    "id": 3177,
                                    "nodeType": "Block",
                                    "src": "13183:91:5",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73",
                                              "id": 3174,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13212:42:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                              },
                                              "value": "ERC1155: ERC1155Receiver rejected tokens"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                              }
                                            ],
                                            "id": 3173,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              4294967277,
                                              4294967277
                                            ],
                                            "referencedDeclaration": 4294967277,
                                            "src": "13205:6:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 3175,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13205:50:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 3176,
                                        "nodeType": "ExpressionStatement",
                                        "src": "13205:50:5"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 3180,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 3165,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 3164,
                                  "mutability": "mutable",
                                  "name": "response",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3180,
                                  "src": "13083:15:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 3163,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13083:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "13082:17:5"
                            },
                            "src": "13074:214:5"
                          },
                          {
                            "block": {
                              "id": 3188,
                              "nodeType": "Block",
                              "src": "13323:47:5",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 3185,
                                        "name": "reason",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3182,
                                        "src": "13348:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "id": 3184,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967277,
                                        4294967277
                                      ],
                                      "referencedDeclaration": 4294967277,
                                      "src": "13341:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 3186,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13341:14:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3187,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13341:14:5"
                                }
                              ]
                            },
                            "errorName": "Error",
                            "id": 3189,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 3183,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 3182,
                                  "mutability": "mutable",
                                  "name": "reason",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3189,
                                  "src": "13301:20:5",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string"
                                  },
                                  "typeName": {
                                    "id": 3181,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13301:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage_ptr",
                                      "typeString": "string"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "13300:22:5"
                            },
                            "src": "13289:81:5"
                          },
                          {
                            "block": {
                              "id": 3194,
                              "nodeType": "Block",
                              "src": "13377:95:5",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572",
                                        "id": 3191,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13402:54:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                          "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                        },
                                        "value": "ERC1155: transfer to non ERC1155Receiver implementer"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                          "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                        }
                                      ],
                                      "id": 3190,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967277,
                                        4294967277
                                      ],
                                      "referencedDeclaration": 4294967277,
                                      "src": "13395:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 3192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13395:62:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3193,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13395:62:5"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 3195,
                            "nodeType": "TryCatchClause",
                            "src": "13371:101:5"
                          }
                        ],
                        "externalCall": {
                          "arguments": [
                            {
                              "id": 3157,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3137,
                              "src": "13040:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3158,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3139,
                              "src": "13050:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3159,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3143,
                              "src": "13056:2:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3160,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3145,
                              "src": "13060:6:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3161,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3147,
                              "src": "13068:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3154,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3141,
                                  "src": "13018:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3153,
                                "name": "IERC1155Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4846,
                                "src": "13001:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$4846_$",
                                  "typeString": "type(contract IERC1155Receiver)"
                                }
                              },
                              "id": 3155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13001:20:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155Receiver_$4846",
                                "typeString": "contract IERC1155Receiver"
                              }
                            },
                            "id": 3156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "onERC1155Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4827,
                            "src": "13001:38:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 3162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13001:72:5",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 3196,
                        "nodeType": "TryStatement",
                        "src": "12997:475:5"
                      }
                    ]
                  }
                }
              ]
            },
            "id": 3200,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doSafeTransferAcceptanceCheck",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3148,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3137,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3200,
                  "src": "12795:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3136,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12795:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3139,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3200,
                  "src": "12821:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3138,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12821:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3141,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 3200,
                  "src": "12843:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3140,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12843:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3143,
                  "mutability": "mutable",
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 3200,
                  "src": "12863:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3142,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12863:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3145,
                  "mutability": "mutable",
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3200,
                  "src": "12883:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3144,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12883:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3147,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 3200,
                  "src": "12907:17:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3146,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12907:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12785:145:5"
            },
            "returnParameters": {
              "id": 3149,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12952:0:5"
            },
            "scope": 3296,
            "src": "12746:742:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3266,
              "nodeType": "Block",
              "src": "13725:548:5",
              "statements": [
                {
                  "condition": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 3217,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3206,
                        "src": "13739:2:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 3218,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6597,
                      "src": "13739:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 3219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13739:15:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 3265,
                  "nodeType": "IfStatement",
                  "src": "13735:532:5",
                  "trueBody": {
                    "id": 3264,
                    "nodeType": "Block",
                    "src": "13756:511:5",
                    "statements": [
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 3246,
                              "nodeType": "Block",
                              "src": "13880:193:5",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 3239,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3233,
                                      "name": "response",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3231,
                                      "src": "13902:8:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "expression": {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 3235,
                                              "name": "to",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3206,
                                              "src": "13931:2:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 3234,
                                            "name": "IERC1155Receiver",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4846,
                                            "src": "13914:16:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$4846_$",
                                              "typeString": "type(contract IERC1155Receiver)"
                                            }
                                          },
                                          "id": 3236,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13914:20:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155Receiver_$4846",
                                            "typeString": "contract IERC1155Receiver"
                                          }
                                        },
                                        "id": 3237,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "onERC1155BatchReceived",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4845,
                                        "src": "13914:43:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                        }
                                      },
                                      "id": 3238,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "src": "13914:52:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "13902:64:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 3245,
                                  "nodeType": "IfStatement",
                                  "src": "13898:161:5",
                                  "trueBody": {
                                    "id": 3244,
                                    "nodeType": "Block",
                                    "src": "13968:91:5",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73",
                                              "id": 3241,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13997:42:5",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                              },
                                              "value": "ERC1155: ERC1155Receiver rejected tokens"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                              }
                                            ],
                                            "id": 3240,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              4294967277,
                                              4294967277
                                            ],
                                            "referencedDeclaration": 4294967277,
                                            "src": "13990:6:5",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 3242,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13990:50:5",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 3243,
                                        "nodeType": "ExpressionStatement",
                                        "src": "13990:50:5"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 3247,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 3232,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 3231,
                                  "mutability": "mutable",
                                  "name": "response",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3247,
                                  "src": "13863:15:5",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 3230,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13863:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "13862:17:5"
                            },
                            "src": "13854:219:5"
                          },
                          {
                            "block": {
                              "id": 3255,
                              "nodeType": "Block",
                              "src": "14108:47:5",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 3252,
                                        "name": "reason",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3249,
                                        "src": "14133:6:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      ],
                                      "id": 3251,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967277,
                                        4294967277
                                      ],
                                      "referencedDeclaration": 4294967277,
                                      "src": "14126:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 3253,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14126:14:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3254,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14126:14:5"
                                }
                              ]
                            },
                            "errorName": "Error",
                            "id": 3256,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 3250,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 3249,
                                  "mutability": "mutable",
                                  "name": "reason",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3256,
                                  "src": "14086:20:5",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string"
                                  },
                                  "typeName": {
                                    "id": 3248,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14086:6:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_storage_ptr",
                                      "typeString": "string"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "14085:22:5"
                            },
                            "src": "14074:81:5"
                          },
                          {
                            "block": {
                              "id": 3261,
                              "nodeType": "Block",
                              "src": "14162:95:5",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572",
                                        "id": 3258,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14187:54:5",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                          "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                        },
                                        "value": "ERC1155: transfer to non ERC1155Receiver implementer"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                          "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                        }
                                      ],
                                      "id": 3257,
                                      "name": "revert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        4294967277,
                                        4294967277
                                      ],
                                      "referencedDeclaration": 4294967277,
                                      "src": "14180:6:5",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (string memory) pure"
                                      }
                                    },
                                    "id": 3259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14180:62:5",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3260,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14180:62:5"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 3262,
                            "nodeType": "TryCatchClause",
                            "src": "14156:101:5"
                          }
                        ],
                        "externalCall": {
                          "arguments": [
                            {
                              "id": 3224,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3202,
                              "src": "13818:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3225,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3204,
                              "src": "13828:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3226,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3209,
                              "src": "13834:3:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3227,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3212,
                              "src": "13839:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 3228,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3214,
                              "src": "13848:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "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"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 3221,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3206,
                                  "src": "13791:2:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3220,
                                "name": "IERC1155Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4846,
                                "src": "13774:16:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$4846_$",
                                  "typeString": "type(contract IERC1155Receiver)"
                                }
                              },
                              "id": 3222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13774:20:5",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155Receiver_$4846",
                                "typeString": "contract IERC1155Receiver"
                              }
                            },
                            "id": 3223,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "onERC1155BatchReceived",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4845,
                            "src": "13774:43:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 3229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13774:79:5",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 3263,
                        "nodeType": "TryStatement",
                        "src": "13770:487:5"
                      }
                    ]
                  }
                }
              ]
            },
            "id": 3267,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_doSafeBatchTransferAcceptanceCheck",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3202,
                  "mutability": "mutable",
                  "name": "operator",
                  "nodeType": "VariableDeclaration",
                  "scope": 3267,
                  "src": "13548:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3201,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13548:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3204,
                  "mutability": "mutable",
                  "name": "from",
                  "nodeType": "VariableDeclaration",
                  "scope": 3267,
                  "src": "13574:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3203,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13574:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3206,
                  "mutability": "mutable",
                  "name": "to",
                  "nodeType": "VariableDeclaration",
                  "scope": 3267,
                  "src": "13596:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3205,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13596:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3209,
                  "mutability": "mutable",
                  "name": "ids",
                  "nodeType": "VariableDeclaration",
                  "scope": 3267,
                  "src": "13616:20:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3207,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "13616:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3208,
                    "nodeType": "ArrayTypeName",
                    "src": "13616:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3212,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "scope": 3267,
                  "src": "13646:24:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3210,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "13646:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3211,
                    "nodeType": "ArrayTypeName",
                    "src": "13646:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3214,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 3267,
                  "src": "13680:17:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3213,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13680:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13538:165:5"
            },
            "returnParameters": {
              "id": 3216,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13725:0:5"
            },
            "scope": 3296,
            "src": "13494:779:5",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3294,
              "nodeType": "Block",
              "src": "14363:109:5",
              "statements": [
                {
                  "assignments": [
                    3279
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3279,
                      "mutability": "mutable",
                      "name": "array",
                      "nodeType": "VariableDeclaration",
                      "scope": 3294,
                      "src": "14373:22:5",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3277,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14373:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3278,
                        "nodeType": "ArrayTypeName",
                        "src": "14373:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3285,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 3283,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14412:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 3282,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "14398:13:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (uint256[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14402:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3281,
                        "nodeType": "ArrayTypeName",
                        "src": "14402:9:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      }
                    },
                    "id": 3284,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14398:16:5",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14373:41:5"
                },
                {
                  "expression": {
                    "id": 3290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 3286,
                        "name": "array",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3279,
                        "src": "14424:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 3288,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 3287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "14430:1:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "14424:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 3289,
                      "name": "element",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3269,
                      "src": "14435:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "14424:18:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3291,
                  "nodeType": "ExpressionStatement",
                  "src": "14424:18:5"
                },
                {
                  "expression": {
                    "id": 3292,
                    "name": "array",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3279,
                    "src": "14460:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                      "typeString": "uint256[] memory"
                    }
                  },
                  "functionReturnParameters": 3274,
                  "id": 3293,
                  "nodeType": "Return",
                  "src": "14453:12:5"
                }
              ]
            },
            "id": 3295,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_asSingletonArray",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3269,
                  "mutability": "mutable",
                  "name": "element",
                  "nodeType": "VariableDeclaration",
                  "scope": 3295,
                  "src": "14306:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3268,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14306:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14305:17:5"
            },
            "returnParameters": {
              "id": 3274,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3273,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3295,
                  "src": "14345:16:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3271,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "14345:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 3272,
                    "nodeType": "ArrayTypeName",
                    "src": "14345:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14344:18:5"
            },
            "scope": 3296,
            "src": "14279:193:5",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 3297,
        "src": "700:13774:5"
      }
    ],
    "src": "33:14442:5"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/user/Projects/future-contracts/contracts/ERC1155/ERC1155.sol",
      "exportedSymbols": {
        "Address": [
          6821
        ],
        "Context": [
          4324
        ],
        "ERC1155": [
          3296
        ],
        "ERC165": [
          4381
        ],
        "IERC1155": [
          4790
        ],
        "IERC1155MetadataURI": [
          4805
        ],
        "IERC1155Receiver": [
          4846
        ],
        "IERC165": [
          4393
        ],
        "SafeMath": [
          4589
        ]
      },
      "license": "MIT"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            ">=",
            "0.6",
            ".0",
            "<",
            "0.8",
            ".0"
          ]
        },
        "id": 2277,
        "name": "PragmaDirective",
        "src": "33:31:5"
      },
      {
        "attributes": {
          "SourceUnit": 4791,
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol",
          "scope": 3297,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2278,
        "name": "ImportDirective",
        "src": "66:60:5"
      },
      {
        "attributes": {
          "SourceUnit": 4806,
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol",
          "file": "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol",
          "scope": 3297,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2279,
        "name": "ImportDirective",
        "src": "127:71:5"
      },
      {
        "attributes": {
          "SourceUnit": 4847,
          "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
          "file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
          "scope": 3297,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2280,
        "name": "ImportDirective",
        "src": "199:68:5"
      },
      {
        "attributes": {
          "SourceUnit": 4325,
          "absolutePath": "@openzeppelin/contracts/GSN/Context.sol",
          "file": "@openzeppelin/contracts/GSN/Context.sol",
          "scope": 3297,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2281,
        "name": "ImportDirective",
        "src": "268:49:5"
      },
      {
        "attributes": {
          "SourceUnit": 4382,
          "absolutePath": "@openzeppelin/contracts/introspection/ERC165.sol",
          "file": "@openzeppelin/contracts/introspection/ERC165.sol",
          "scope": 3297,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2282,
        "name": "ImportDirective",
        "src": "318:58:5"
      },
      {
        "attributes": {
          "SourceUnit": 4590,
          "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
          "file": "@openzeppelin/contracts/math/SafeMath.sol",
          "scope": 3297,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2283,
        "name": "ImportDirective",
        "src": "377:51:5"
      },
      {
        "attributes": {
          "SourceUnit": 6822,
          "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
          "file": "@openzeppelin/contracts/utils/Address.sol",
          "scope": 3297,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2284,
        "name": "ImportDirective",
        "src": "429:51:5"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            4324,
            4381,
            4393,
            4790,
            4805
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3296,
            4805,
            4790,
            4381,
            4393,
            4324
          ],
          "name": "ERC1155",
          "scope": 3297
        },
        "children": [
          {
            "attributes": {
              "text": " @dev Implementation of the basic standard multi-token.\n See https://eips.ethereum.org/EIPS/eip-1155\n Originally based on code by Enjin: https://github.com/enjin/erc-1155\n _Available since v3.1._"
            },
            "id": 2285,
            "name": "StructuredDocumentation",
            "src": "482:217:5"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "Context",
                  "referencedDeclaration": 4324,
                  "type": "contract Context"
                },
                "id": 2286,
                "name": "UserDefinedTypeName",
                "src": "720:7:5"
              }
            ],
            "id": 2287,
            "name": "InheritanceSpecifier",
            "src": "720:7:5"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "ERC165",
                  "referencedDeclaration": 4381,
                  "type": "contract ERC165"
                },
                "id": 2288,
                "name": "UserDefinedTypeName",
                "src": "729:6:5"
              }
            ],
            "id": 2289,
            "name": "InheritanceSpecifier",
            "src": "729:6:5"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "IERC1155",
                  "referencedDeclaration": 4790,
                  "type": "contract IERC1155"
                },
                "id": 2290,
                "name": "UserDefinedTypeName",
                "src": "737:8:5"
              }
            ],
            "id": 2291,
            "name": "InheritanceSpecifier",
            "src": "737:8:5"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "IERC1155MetadataURI",
                  "referencedDeclaration": 4805,
                  "type": "contract IERC1155MetadataURI"
                },
                "id": 2292,
                "name": "UserDefinedTypeName",
                "src": "747:19:5"
              }
            ],
            "id": 2293,
            "name": "InheritanceSpecifier",
            "src": "747:19:5"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeMath",
                  "referencedDeclaration": 4589,
                  "type": "library SafeMath"
                },
                "id": 2294,
                "name": "UserDefinedTypeName",
                "src": "779:8:5"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 2295,
                "name": "ElementaryTypeName",
                "src": "792:7:5"
              }
            ],
            "id": 2296,
            "name": "UsingForDirective",
            "src": "773:27:5"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "Address",
                  "referencedDeclaration": 6821,
                  "type": "library Address"
                },
                "id": 2297,
                "name": "UserDefinedTypeName",
                "src": "811:7:5"
              },
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 2298,
                "name": "ElementaryTypeName",
                "src": "823:7:5"
              }
            ],
            "id": 2299,
            "name": "UsingForDirective",
            "src": "805:26:5"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_balances",
              "scope": 3296,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint256 => mapping(address => uint256))",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint256 => mapping(address => uint256))"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 2300,
                    "name": "ElementaryTypeName",
                    "src": "895:7:5"
                  },
                  {
                    "attributes": {
                      "type": "mapping(address => uint256)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2301,
                        "name": "ElementaryTypeName",
                        "src": "914:7:5"
                      },
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2302,
                        "name": "ElementaryTypeName",
                        "src": "925:7:5"
                      }
                    ],
                    "id": 2303,
                    "name": "Mapping",
                    "src": "906:27:5"
                  }
                ],
                "id": 2304,
                "name": "Mapping",
                "src": "886:48:5"
              }
            ],
            "id": 2305,
            "name": "VariableDeclaration",
            "src": "886:67:5"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_operatorApprovals",
              "scope": 3296,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => mapping(address => bool))",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => mapping(address => bool))"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 2306,
                    "name": "ElementaryTypeName",
                    "src": "1019:7:5"
                  },
                  {
                    "attributes": {
                      "type": "mapping(address => bool)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 2307,
                        "name": "ElementaryTypeName",
                        "src": "1038:7:5"
                      },
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2308,
                        "name": "ElementaryTypeName",
                        "src": "1049:4:5"
                      }
                    ],
                    "id": 2309,
                    "name": "Mapping",
                    "src": "1030:24:5"
                  }
                ],
                "id": 2310,
                "name": "Mapping",
                "src": "1010:45:5"
              }
            ],
            "id": 2311,
            "name": "VariableDeclaration",
            "src": "1010:73:5"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_uri",
              "scope": 3296,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string"
                },
                "id": 2312,
                "name": "ElementaryTypeName",
                "src": "1204:6:5"
              }
            ],
            "id": 2313,
            "name": "VariableDeclaration",
            "src": "1204:19:5"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "_INTERFACE_ID_ERC1155",
              "scope": 3296,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes4",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes4",
                  "type": "bytes4"
                },
                "id": 2314,
                "name": "ElementaryTypeName",
                "src": "1896:6:5"
              },
              {
                "attributes": {
                  "hexvalue": "30786439623637613236",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 3652614694",
                  "value": "0xd9b67a26"
                },
                "id": 2315,
                "name": "Literal",
                "src": "1944:10:5"
              }
            ],
            "id": 2316,
            "name": "VariableDeclaration",
            "src": "1896:58:5"
          },
          {
            "attributes": {
              "constant": true,
              "mutability": "constant",
              "name": "_INTERFACE_ID_ERC1155_METADATA_URI",
              "scope": 3296,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes4",
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes4",
                  "type": "bytes4"
                },
                "id": 2317,
                "name": "ElementaryTypeName",
                "src": "2035:6:5"
              },
              {
                "attributes": {
                  "hexvalue": "30783065383933343163",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 243872796",
                  "value": "0x0e89341c"
                },
                "id": 2318,
                "name": "Literal",
                "src": "2096:10:5"
              }
            ],
            "id": 2319,
            "name": "VariableDeclaration",
            "src": "2035:71:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev See {_setURI}."
                },
                "id": 2320,
                "name": "StructuredDocumentation",
                "src": "2113:38:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "uri_",
                      "scope": 2338,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 2321,
                        "name": "ElementaryTypeName",
                        "src": "2169:6:5"
                      }
                    ],
                    "id": 2322,
                    "name": "VariableDeclaration",
                    "src": "2169:18:5"
                  }
                ],
                "id": 2323,
                "name": "ParameterList",
                "src": "2168:20:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2324,
                "name": "ParameterList",
                "src": "2189:0:5"
              },
              {
                "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_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2762,
                              "type": "function (string memory)",
                              "value": "_setURI"
                            },
                            "id": 2325,
                            "name": "Identifier",
                            "src": "2199:7:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2322,
                              "type": "string memory",
                              "value": "uri_"
                            },
                            "id": 2326,
                            "name": "Identifier",
                            "src": "2207:4:5"
                          }
                        ],
                        "id": 2327,
                        "name": "FunctionCall",
                        "src": "2199:13:5"
                      }
                    ],
                    "id": 2328,
                    "name": "ExpressionStatement",
                    "src": "2199:13:5"
                  },
                  {
                    "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_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4380,
                              "type": "function (bytes4)",
                              "value": "_registerInterface"
                            },
                            "id": 2329,
                            "name": "Identifier",
                            "src": "2301:18:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2316,
                              "type": "bytes4",
                              "value": "_INTERFACE_ID_ERC1155"
                            },
                            "id": 2330,
                            "name": "Identifier",
                            "src": "2320:21:5"
                          }
                        ],
                        "id": 2331,
                        "name": "FunctionCall",
                        "src": "2301:41:5"
                      }
                    ],
                    "id": 2332,
                    "name": "ExpressionStatement",
                    "src": "2301:41:5"
                  },
                  {
                    "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_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4380,
                              "type": "function (bytes4)",
                              "value": "_registerInterface"
                            },
                            "id": 2333,
                            "name": "Identifier",
                            "src": "2442:18:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2319,
                              "type": "bytes4",
                              "value": "_INTERFACE_ID_ERC1155_METADATA_URI"
                            },
                            "id": 2334,
                            "name": "Identifier",
                            "src": "2461:34:5"
                          }
                        ],
                        "id": 2335,
                        "name": "FunctionCall",
                        "src": "2442:54:5"
                      }
                    ],
                    "id": 2336,
                    "name": "ExpressionStatement",
                    "src": "2442:54:5"
                  }
                ],
                "id": 2337,
                "name": "Block",
                "src": "2189:314:5"
              }
            ],
            "id": 2338,
            "name": "FunctionDefinition",
            "src": "2156:347:5"
          },
          {
            "attributes": {
              "baseFunctions": [
                4804
              ],
              "functionSelector": "0e89341c",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "uri",
              "scope": 3296,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev See {IERC1155MetadataURI-uri}.\n This implementation returns the same URI for *all* token types. It relies\n on the token type ID substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n Clients calling this function must replace the `\\{id\\}` substring with the\n actual token type ID."
                },
                "id": 2339,
                "name": "StructuredDocumentation",
                "src": "2509:388:5"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2343,
                "name": "OverrideSpecifier",
                "src": "2938:8:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2350,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2340,
                        "name": "ElementaryTypeName",
                        "src": "2915:7:5"
                      }
                    ],
                    "id": 2341,
                    "name": "VariableDeclaration",
                    "src": "2915:7:5"
                  }
                ],
                "id": 2342,
                "name": "ParameterList",
                "src": "2914:9:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2350,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 2344,
                        "name": "ElementaryTypeName",
                        "src": "2956:6:5"
                      }
                    ],
                    "id": 2345,
                    "name": "VariableDeclaration",
                    "src": "2956:13:5"
                  }
                ],
                "id": 2346,
                "name": "ParameterList",
                "src": "2955:15:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2346
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2313,
                          "type": "string storage ref",
                          "value": "_uri"
                        },
                        "id": 2347,
                        "name": "Identifier",
                        "src": "2988:4:5"
                      }
                    ],
                    "id": 2348,
                    "name": "Return",
                    "src": "2981:11:5"
                  }
                ],
                "id": 2349,
                "name": "Block",
                "src": "2971:28:5"
              }
            ],
            "id": 2350,
            "name": "FunctionDefinition",
            "src": "2902:97:5"
          },
          {
            "attributes": {
              "baseFunctions": [
                4728
              ],
              "functionSelector": "00fdd58e",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "balanceOf",
              "scope": 3296,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address."
                },
                "id": 2351,
                "name": "StructuredDocumentation",
                "src": "3005:131:5"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2357,
                "name": "OverrideSpecifier",
                "src": "3209:8:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "account",
                      "scope": 2378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2352,
                        "name": "ElementaryTypeName",
                        "src": "3160:7:5"
                      }
                    ],
                    "id": 2353,
                    "name": "VariableDeclaration",
                    "src": "3160:15:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 2378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2354,
                        "name": "ElementaryTypeName",
                        "src": "3177:7:5"
                      }
                    ],
                    "id": 2355,
                    "name": "VariableDeclaration",
                    "src": "3177:10:5"
                  }
                ],
                "id": 2356,
                "name": "ParameterList",
                "src": "3159:29:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2378,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2358,
                        "name": "ElementaryTypeName",
                        "src": "3227:7:5"
                      }
                    ],
                    "id": 2359,
                    "name": "VariableDeclaration",
                    "src": "3227:7:5"
                  }
                ],
                "id": 2360,
                "name": "ParameterList",
                "src": "3226:9:5"
              },
              {
                "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_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9",
                                  "typeString": "literal_string \"ERC1155: balance query for the zero address\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2361,
                            "name": "Identifier",
                            "src": "3246:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2353,
                                  "type": "address",
                                  "value": "account"
                                },
                                "id": 2362,
                                "name": "Identifier",
                                "src": "3254:7:5"
                              },
                              {
                                "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": 2363,
                                        "name": "ElementaryTypeName",
                                        "src": "3265:7:5"
                                      }
                                    ],
                                    "id": 2364,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3265:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2365,
                                    "name": "Literal",
                                    "src": "3273:1:5"
                                  }
                                ],
                                "id": 2366,
                                "name": "FunctionCall",
                                "src": "3265:10:5"
                              }
                            ],
                            "id": 2367,
                            "name": "BinaryOperation",
                            "src": "3254:21:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: balance query for the zero address\"",
                              "value": "ERC1155: balance query for the zero address"
                            },
                            "id": 2368,
                            "name": "Literal",
                            "src": "3277:45:5"
                          }
                        ],
                        "id": 2369,
                        "name": "FunctionCall",
                        "src": "3246:77:5"
                      }
                    ],
                    "id": 2370,
                    "name": "ExpressionStatement",
                    "src": "3246:77:5"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2360
                    },
                    "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": 2371,
                                "name": "Identifier",
                                "src": "3340:9:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2355,
                                  "type": "uint256",
                                  "value": "id"
                                },
                                "id": 2372,
                                "name": "Identifier",
                                "src": "3350:2:5"
                              }
                            ],
                            "id": 2373,
                            "name": "IndexAccess",
                            "src": "3340:13:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2353,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 2374,
                            "name": "Identifier",
                            "src": "3354:7:5"
                          }
                        ],
                        "id": 2375,
                        "name": "IndexAccess",
                        "src": "3340:22:5"
                      }
                    ],
                    "id": 2376,
                    "name": "Return",
                    "src": "3333:29:5"
                  }
                ],
                "id": 2377,
                "name": "Block",
                "src": "3236:133:5"
              }
            ],
            "id": 2378,
            "name": "FunctionDefinition",
            "src": "3141:228:5"
          },
          {
            "attributes": {
              "baseFunctions": [
                4741
              ],
              "functionSelector": "4e1273f4",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "balanceOfBatch",
              "scope": 3296,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length."
                },
                "id": 2379,
                "name": "StructuredDocumentation",
                "src": "3375:146:5"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2387,
                "name": "OverrideSpecifier",
                "src": "3673:8:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "accounts",
                      "scope": 2455,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "address[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "address[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2380,
                            "name": "ElementaryTypeName",
                            "src": "3559:7:5"
                          }
                        ],
                        "id": 2381,
                        "name": "ArrayTypeName",
                        "src": "3559:9:5"
                      }
                    ],
                    "id": 2382,
                    "name": "VariableDeclaration",
                    "src": "3559:25:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "scope": 2455,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2383,
                            "name": "ElementaryTypeName",
                            "src": "3594:7:5"
                          }
                        ],
                        "id": 2384,
                        "name": "ArrayTypeName",
                        "src": "3594:9:5"
                      }
                    ],
                    "id": 2385,
                    "name": "VariableDeclaration",
                    "src": "3594:20:5"
                  }
                ],
                "id": 2386,
                "name": "ParameterList",
                "src": "3549:71:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2455,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2388,
                            "name": "ElementaryTypeName",
                            "src": "3699:7:5"
                          }
                        ],
                        "id": 2389,
                        "name": "ArrayTypeName",
                        "src": "3699:9:5"
                      }
                    ],
                    "id": 2390,
                    "name": "VariableDeclaration",
                    "src": "3699:16:5"
                  }
                ],
                "id": 2391,
                "name": "ParameterList",
                "src": "3698:18:5"
              },
              {
                "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_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5",
                                  "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2392,
                            "name": "Identifier",
                            "src": "3731:7:5"
                          },
                          {
                            "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": 2382,
                                      "type": "address[] memory",
                                      "value": "accounts"
                                    },
                                    "id": 2393,
                                    "name": "Identifier",
                                    "src": "3739:8:5"
                                  }
                                ],
                                "id": 2394,
                                "name": "MemberAccess",
                                "src": "3739:15:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2385,
                                      "type": "uint256[] memory",
                                      "value": "ids"
                                    },
                                    "id": 2395,
                                    "name": "Identifier",
                                    "src": "3758:3:5"
                                  }
                                ],
                                "id": 2396,
                                "name": "MemberAccess",
                                "src": "3758:10:5"
                              }
                            ],
                            "id": 2397,
                            "name": "BinaryOperation",
                            "src": "3739:29:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: accounts and ids length mismatch\"",
                              "value": "ERC1155: accounts and ids length mismatch"
                            },
                            "id": 2398,
                            "name": "Literal",
                            "src": "3770:43:5"
                          }
                        ],
                        "id": 2399,
                        "name": "FunctionCall",
                        "src": "3731:83:5"
                      }
                    ],
                    "id": 2400,
                    "name": "ExpressionStatement",
                    "src": "3731:83:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2405
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "batchBalances",
                          "scope": 2454,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "uint256[]",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "type": "uint256[]"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 2403,
                                "name": "ElementaryTypeName",
                                "src": "3825:7:5"
                              }
                            ],
                            "id": 2404,
                            "name": "ArrayTypeName",
                            "src": "3825:9:5"
                          }
                        ],
                        "id": 2405,
                        "name": "VariableDeclaration",
                        "src": "3825:30:5"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256[] memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "type": "uint256[]"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 2406,
                                    "name": "ElementaryTypeName",
                                    "src": "3862:7:5"
                                  }
                                ],
                                "id": 2407,
                                "name": "ArrayTypeName",
                                "src": "3862:9:5"
                              }
                            ],
                            "id": 2408,
                            "name": "NewExpression",
                            "src": "3858:13:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2382,
                                  "type": "address[] memory",
                                  "value": "accounts"
                                },
                                "id": 2409,
                                "name": "Identifier",
                                "src": "3872:8:5"
                              }
                            ],
                            "id": 2410,
                            "name": "MemberAccess",
                            "src": "3872:15:5"
                          }
                        ],
                        "id": 2411,
                        "name": "FunctionCall",
                        "src": "3858:30:5"
                      }
                    ],
                    "id": 2412,
                    "name": "VariableDeclarationStatement",
                    "src": "3825:63:5"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            2414
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 2451,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 2413,
                                "name": "ElementaryTypeName",
                                "src": "3904:7:5"
                              }
                            ],
                            "id": 2414,
                            "name": "VariableDeclaration",
                            "src": "3904:9:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2415,
                            "name": "Literal",
                            "src": "3916:1:5"
                          }
                        ],
                        "id": 2416,
                        "name": "VariableDeclarationStatement",
                        "src": "3904:13:5"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2414,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 2417,
                            "name": "Identifier",
                            "src": "3919:1:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2382,
                                  "type": "address[] memory",
                                  "value": "accounts"
                                },
                                "id": 2418,
                                "name": "Identifier",
                                "src": "3923:8:5"
                              }
                            ],
                            "id": 2419,
                            "name": "MemberAccess",
                            "src": "3923:15:5"
                          }
                        ],
                        "id": 2420,
                        "name": "BinaryOperation",
                        "src": "3919:19:5"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2414,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 2421,
                                "name": "Identifier",
                                "src": "3942:1:5"
                              }
                            ],
                            "id": 2422,
                            "name": "UnaryOperation",
                            "src": "3940:3:5"
                          }
                        ],
                        "id": 2423,
                        "name": "ExpressionStatement",
                        "src": "3940:3:5"
                      },
                      {
                        "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_1fbbb69d10332726591dc7ee4a23a94661eda2bec5ce6bf93a68249147dc8d9c",
                                          "typeString": "literal_string \"ERC1155: batch balance query for the zero address\""
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        4294967278,
                                        4294967278
                                      ],
                                      "referencedDeclaration": 4294967278,
                                      "type": "function (bool,string memory) pure",
                                      "value": "require"
                                    },
                                    "id": 2424,
                                    "name": "Identifier",
                                    "src": "3959:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "!=",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2382,
                                              "type": "address[] memory",
                                              "value": "accounts"
                                            },
                                            "id": 2425,
                                            "name": "Identifier",
                                            "src": "3967:8:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2414,
                                              "type": "uint256",
                                              "value": "i"
                                            },
                                            "id": 2426,
                                            "name": "Identifier",
                                            "src": "3976:1:5"
                                          }
                                        ],
                                        "id": 2427,
                                        "name": "IndexAccess",
                                        "src": "3967:11:5"
                                      },
                                      {
                                        "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": 2428,
                                                "name": "ElementaryTypeName",
                                                "src": "3982:7:5"
                                              }
                                            ],
                                            "id": 2429,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "3982:7:5"
                                          },
                                          {
                                            "attributes": {
                                              "hexvalue": "30",
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "token": "number",
                                              "type": "int_const 0",
                                              "value": "0"
                                            },
                                            "id": 2430,
                                            "name": "Literal",
                                            "src": "3990:1:5"
                                          }
                                        ],
                                        "id": 2431,
                                        "name": "FunctionCall",
                                        "src": "3982:10:5"
                                      }
                                    ],
                                    "id": 2432,
                                    "name": "BinaryOperation",
                                    "src": "3967:25:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "455243313135353a2062617463682062616c616e636520717565727920666f7220746865207a65726f2061646472657373",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "string",
                                      "type": "literal_string \"ERC1155: batch balance query for the zero address\"",
                                      "value": "ERC1155: batch balance query for the zero address"
                                    },
                                    "id": 2433,
                                    "name": "Literal",
                                    "src": "3994:51:5"
                                  }
                                ],
                                "id": 2434,
                                "name": "FunctionCall",
                                "src": "3959:87:5"
                              }
                            ],
                            "id": 2435,
                            "name": "ExpressionStatement",
                            "src": "3959:87:5"
                          },
                          {
                            "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": 2405,
                                          "type": "uint256[] memory",
                                          "value": "batchBalances"
                                        },
                                        "id": 2436,
                                        "name": "Identifier",
                                        "src": "4060:13:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2414,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 2437,
                                        "name": "Identifier",
                                        "src": "4074:1:5"
                                      }
                                    ],
                                    "id": 2438,
                                    "name": "IndexAccess",
                                    "src": "4060:16:5"
                                  },
                                  {
                                    "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": 2439,
                                            "name": "Identifier",
                                            "src": "4079:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2385,
                                                  "type": "uint256[] memory",
                                                  "value": "ids"
                                                },
                                                "id": 2440,
                                                "name": "Identifier",
                                                "src": "4089:3:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2414,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 2441,
                                                "name": "Identifier",
                                                "src": "4093:1:5"
                                              }
                                            ],
                                            "id": 2442,
                                            "name": "IndexAccess",
                                            "src": "4089:6:5"
                                          }
                                        ],
                                        "id": 2443,
                                        "name": "IndexAccess",
                                        "src": "4079:17:5"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "address"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2382,
                                              "type": "address[] memory",
                                              "value": "accounts"
                                            },
                                            "id": 2444,
                                            "name": "Identifier",
                                            "src": "4097:8:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2414,
                                              "type": "uint256",
                                              "value": "i"
                                            },
                                            "id": 2445,
                                            "name": "Identifier",
                                            "src": "4106:1:5"
                                          }
                                        ],
                                        "id": 2446,
                                        "name": "IndexAccess",
                                        "src": "4097:11:5"
                                      }
                                    ],
                                    "id": 2447,
                                    "name": "IndexAccess",
                                    "src": "4079:30:5"
                                  }
                                ],
                                "id": 2448,
                                "name": "Assignment",
                                "src": "4060:49:5"
                              }
                            ],
                            "id": 2449,
                            "name": "ExpressionStatement",
                            "src": "4060:49:5"
                          }
                        ],
                        "id": 2450,
                        "name": "Block",
                        "src": "3945:175:5"
                      }
                    ],
                    "id": 2451,
                    "name": "ForStatement",
                    "src": "3899:221:5"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2391
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 2405,
                          "type": "uint256[] memory",
                          "value": "batchBalances"
                        },
                        "id": 2452,
                        "name": "Identifier",
                        "src": "4137:13:5"
                      }
                    ],
                    "id": 2453,
                    "name": "Return",
                    "src": "4130:20:5"
                  }
                ],
                "id": 2454,
                "name": "Block",
                "src": "3721:436:5"
              }
            ],
            "id": 2455,
            "name": "FunctionDefinition",
            "src": "3526:631:5"
          },
          {
            "attributes": {
              "baseFunctions": [
                4749
              ],
              "functionSelector": "a22cb465",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setApprovalForAll",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev See {IERC1155-setApprovalForAll}."
                },
                "id": 2456,
                "name": "StructuredDocumentation",
                "src": "4163:57:5"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2462,
                "name": "OverrideSpecifier",
                "src": "4300:8:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "operator",
                      "scope": 2489,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2457,
                        "name": "ElementaryTypeName",
                        "src": "4252:7:5"
                      }
                    ],
                    "id": 2458,
                    "name": "VariableDeclaration",
                    "src": "4252:16:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "approved",
                      "scope": 2489,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2459,
                        "name": "ElementaryTypeName",
                        "src": "4270:4:5"
                      }
                    ],
                    "id": 2460,
                    "name": "VariableDeclaration",
                    "src": "4270:13:5"
                  }
                ],
                "id": 2461,
                "name": "ParameterList",
                "src": "4251:33:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2463,
                "name": "ParameterList",
                "src": "4309:0:5"
              },
              {
                "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_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2",
                                  "typeString": "literal_string \"ERC1155: setting approval status for self\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2464,
                            "name": "Identifier",
                            "src": "4319:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 4312,
                                      "type": "function () view returns (address payable)",
                                      "value": "_msgSender"
                                    },
                                    "id": 2465,
                                    "name": "Identifier",
                                    "src": "4327:10:5"
                                  }
                                ],
                                "id": 2466,
                                "name": "FunctionCall",
                                "src": "4327:12:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2458,
                                  "type": "address",
                                  "value": "operator"
                                },
                                "id": 2467,
                                "name": "Identifier",
                                "src": "4343:8:5"
                              }
                            ],
                            "id": 2468,
                            "name": "BinaryOperation",
                            "src": "4327:24:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: setting approval status for self\"",
                              "value": "ERC1155: setting approval status for self"
                            },
                            "id": 2469,
                            "name": "Literal",
                            "src": "4353:43:5"
                          }
                        ],
                        "id": 2470,
                        "name": "FunctionCall",
                        "src": "4319:78:5"
                      }
                    ],
                    "id": 2471,
                    "name": "ExpressionStatement",
                    "src": "4319:78:5"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(address => bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2311,
                                      "type": "mapping(address => mapping(address => bool))",
                                      "value": "_operatorApprovals"
                                    },
                                    "id": 2472,
                                    "name": "Identifier",
                                    "src": "4408:18:5"
                                  },
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address payable",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4312,
                                          "type": "function () view returns (address payable)",
                                          "value": "_msgSender"
                                        },
                                        "id": 2473,
                                        "name": "Identifier",
                                        "src": "4427:10:5"
                                      }
                                    ],
                                    "id": 2474,
                                    "name": "FunctionCall",
                                    "src": "4427:12:5"
                                  }
                                ],
                                "id": 2476,
                                "name": "IndexAccess",
                                "src": "4408:32:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2458,
                                  "type": "address",
                                  "value": "operator"
                                },
                                "id": 2475,
                                "name": "Identifier",
                                "src": "4441:8:5"
                              }
                            ],
                            "id": 2477,
                            "name": "IndexAccess",
                            "src": "4408:42:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2460,
                              "type": "bool",
                              "value": "approved"
                            },
                            "id": 2478,
                            "name": "Identifier",
                            "src": "4453:8:5"
                          }
                        ],
                        "id": 2479,
                        "name": "Assignment",
                        "src": "4408:53:5"
                      }
                    ],
                    "id": 2480,
                    "name": "ExpressionStatement",
                    "src": "4408:53:5"
                  },
                  {
                    "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_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4711,
                              "type": "function (address,address,bool)",
                              "value": "ApprovalForAll"
                            },
                            "id": 2481,
                            "name": "Identifier",
                            "src": "4476:14:5"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 4312,
                                  "type": "function () view returns (address payable)",
                                  "value": "_msgSender"
                                },
                                "id": 2482,
                                "name": "Identifier",
                                "src": "4491:10:5"
                              }
                            ],
                            "id": 2483,
                            "name": "FunctionCall",
                            "src": "4491:12:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2458,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2484,
                            "name": "Identifier",
                            "src": "4505:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2460,
                              "type": "bool",
                              "value": "approved"
                            },
                            "id": 2485,
                            "name": "Identifier",
                            "src": "4515:8:5"
                          }
                        ],
                        "id": 2486,
                        "name": "FunctionCall",
                        "src": "4476:48:5"
                      }
                    ],
                    "id": 2487,
                    "name": "EmitStatement",
                    "src": "4471:53:5"
                  }
                ],
                "id": 2488,
                "name": "Block",
                "src": "4309:222:5"
              }
            ],
            "id": 2489,
            "name": "FunctionDefinition",
            "src": "4225:306:5"
          },
          {
            "attributes": {
              "baseFunctions": [
                4759
              ],
              "functionSelector": "e985e9c5",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isApprovedForAll",
              "scope": 3296,
              "stateMutability": "view",
              "virtual": true,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev See {IERC1155-isApprovedForAll}."
                },
                "id": 2490,
                "name": "StructuredDocumentation",
                "src": "4537:56:5"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2496,
                "name": "OverrideSpecifier",
                "src": "4679:8:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "account",
                      "scope": 2507,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2491,
                        "name": "ElementaryTypeName",
                        "src": "4624:7:5"
                      }
                    ],
                    "id": 2492,
                    "name": "VariableDeclaration",
                    "src": "4624:15:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "operator",
                      "scope": 2507,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2493,
                        "name": "ElementaryTypeName",
                        "src": "4641:7:5"
                      }
                    ],
                    "id": 2494,
                    "name": "VariableDeclaration",
                    "src": "4641:16:5"
                  }
                ],
                "id": 2495,
                "name": "ParameterList",
                "src": "4623:35:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2507,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 2497,
                        "name": "ElementaryTypeName",
                        "src": "4697:4:5"
                      }
                    ],
                    "id": 2498,
                    "name": "VariableDeclaration",
                    "src": "4697:4:5"
                  }
                ],
                "id": 2499,
                "name": "ParameterList",
                "src": "4696:6:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2499
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(address => bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2311,
                                  "type": "mapping(address => mapping(address => bool))",
                                  "value": "_operatorApprovals"
                                },
                                "id": 2500,
                                "name": "Identifier",
                                "src": "4720:18:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2492,
                                  "type": "address",
                                  "value": "account"
                                },
                                "id": 2501,
                                "name": "Identifier",
                                "src": "4739:7:5"
                              }
                            ],
                            "id": 2502,
                            "name": "IndexAccess",
                            "src": "4720:27:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2494,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2503,
                            "name": "Identifier",
                            "src": "4748:8:5"
                          }
                        ],
                        "id": 2504,
                        "name": "IndexAccess",
                        "src": "4720:37:5"
                      }
                    ],
                    "id": 2505,
                    "name": "Return",
                    "src": "4713:44:5"
                  }
                ],
                "id": 2506,
                "name": "Block",
                "src": "4703:61:5"
              }
            ],
            "id": 2507,
            "name": "FunctionDefinition",
            "src": "4598:166:5"
          },
          {
            "attributes": {
              "baseFunctions": [
                4773
              ],
              "functionSelector": "f242432a",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "safeTransferFrom",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev See {IERC1155-safeTransferFrom}."
                },
                "id": 2508,
                "name": "StructuredDocumentation",
                "src": "4770:56:5"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2520,
                "name": "OverrideSpecifier",
                "src": "5015:8:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "from",
                      "scope": 2613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2509,
                        "name": "ElementaryTypeName",
                        "src": "4866:7:5"
                      }
                    ],
                    "id": 2510,
                    "name": "VariableDeclaration",
                    "src": "4866:12:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 2613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2511,
                        "name": "ElementaryTypeName",
                        "src": "4888:7:5"
                      }
                    ],
                    "id": 2512,
                    "name": "VariableDeclaration",
                    "src": "4888:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 2613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2513,
                        "name": "ElementaryTypeName",
                        "src": "4908:7:5"
                      }
                    ],
                    "id": 2514,
                    "name": "VariableDeclaration",
                    "src": "4908:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 2613,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2515,
                        "name": "ElementaryTypeName",
                        "src": "4928:7:5"
                      }
                    ],
                    "id": 2516,
                    "name": "VariableDeclaration",
                    "src": "4928:14:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2613,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2517,
                        "name": "ElementaryTypeName",
                        "src": "4952:5:5"
                      }
                    ],
                    "id": 2518,
                    "name": "VariableDeclaration",
                    "src": "4952:17:5"
                  }
                ],
                "id": 2519,
                "name": "ParameterList",
                "src": "4856:119:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2521,
                "name": "ParameterList",
                "src": "5028:0:5"
              },
              {
                "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_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                  "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2522,
                            "name": "Identifier",
                            "src": "5038:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2512,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 2523,
                                "name": "Identifier",
                                "src": "5046:2:5"
                              },
                              {
                                "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": 2524,
                                        "name": "ElementaryTypeName",
                                        "src": "5052:7:5"
                                      }
                                    ],
                                    "id": 2525,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "5052:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2526,
                                    "name": "Literal",
                                    "src": "5060:1:5"
                                  }
                                ],
                                "id": 2527,
                                "name": "FunctionCall",
                                "src": "5052:10:5"
                              }
                            ],
                            "id": 2528,
                            "name": "BinaryOperation",
                            "src": "5046:16:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: transfer to the zero address\"",
                              "value": "ERC1155: transfer to the zero address"
                            },
                            "id": 2529,
                            "name": "Literal",
                            "src": "5064:39:5"
                          }
                        ],
                        "id": 2530,
                        "name": "FunctionCall",
                        "src": "5038:66:5"
                      }
                    ],
                    "id": 2531,
                    "name": "ExpressionStatement",
                    "src": "5038:66:5"
                  },
                  {
                    "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_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a",
                                  "typeString": "literal_string \"ERC1155: caller is not owner nor approved\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2532,
                            "name": "Identifier",
                            "src": "5114:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2510,
                                      "type": "address",
                                      "value": "from"
                                    },
                                    "id": 2533,
                                    "name": "Identifier",
                                    "src": "5135:4:5"
                                  },
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address payable",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4312,
                                          "type": "function () view returns (address payable)",
                                          "value": "_msgSender"
                                        },
                                        "id": 2534,
                                        "name": "Identifier",
                                        "src": "5143:10:5"
                                      }
                                    ],
                                    "id": 2535,
                                    "name": "FunctionCall",
                                    "src": "5143:12:5"
                                  }
                                ],
                                "id": 2536,
                                "name": "BinaryOperation",
                                "src": "5135:20:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2507,
                                      "type": "function (address,address) view returns (bool)",
                                      "value": "isApprovedForAll"
                                    },
                                    "id": 2537,
                                    "name": "Identifier",
                                    "src": "5159:16:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2510,
                                      "type": "address",
                                      "value": "from"
                                    },
                                    "id": 2538,
                                    "name": "Identifier",
                                    "src": "5176:4:5"
                                  },
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address payable",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4312,
                                          "type": "function () view returns (address payable)",
                                          "value": "_msgSender"
                                        },
                                        "id": 2539,
                                        "name": "Identifier",
                                        "src": "5182:10:5"
                                      }
                                    ],
                                    "id": 2540,
                                    "name": "FunctionCall",
                                    "src": "5182:12:5"
                                  }
                                ],
                                "id": 2541,
                                "name": "FunctionCall",
                                "src": "5159:36:5"
                              }
                            ],
                            "id": 2542,
                            "name": "BinaryOperation",
                            "src": "5135:60:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: caller is not owner nor approved\"",
                              "value": "ERC1155: caller is not owner nor approved"
                            },
                            "id": 2543,
                            "name": "Literal",
                            "src": "5209:43:5"
                          }
                        ],
                        "id": 2544,
                        "name": "FunctionCall",
                        "src": "5114:148:5"
                      }
                    ],
                    "id": 2545,
                    "name": "ExpressionStatement",
                    "src": "5114:148:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2547
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "operator",
                          "scope": 2612,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2546,
                            "name": "ElementaryTypeName",
                            "src": "5273:7:5"
                          }
                        ],
                        "id": 2547,
                        "name": "VariableDeclaration",
                        "src": "5273:16:5"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4312,
                              "type": "function () view returns (address payable)",
                              "value": "_msgSender"
                            },
                            "id": 2548,
                            "name": "Identifier",
                            "src": "5292:10:5"
                          }
                        ],
                        "id": 2549,
                        "name": "FunctionCall",
                        "src": "5292:12:5"
                      }
                    ],
                    "id": 2550,
                    "name": "VariableDeclarationStatement",
                    "src": "5273:31:5"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "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": 3135,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_beforeTokenTransfer"
                            },
                            "id": 2551,
                            "name": "Identifier",
                            "src": "5315:20:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2547,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2552,
                            "name": "Identifier",
                            "src": "5336:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2510,
                              "type": "address",
                              "value": "from"
                            },
                            "id": 2553,
                            "name": "Identifier",
                            "src": "5346:4:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2512,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2554,
                            "name": "Identifier",
                            "src": "5352:2:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256[] memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3295,
                                  "type": "function (uint256) pure returns (uint256[] memory)",
                                  "value": "_asSingletonArray"
                                },
                                "id": 2555,
                                "name": "Identifier",
                                "src": "5356:17:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2514,
                                  "type": "uint256",
                                  "value": "id"
                                },
                                "id": 2556,
                                "name": "Identifier",
                                "src": "5374:2:5"
                              }
                            ],
                            "id": 2557,
                            "name": "FunctionCall",
                            "src": "5356:21:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256[] memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3295,
                                  "type": "function (uint256) pure returns (uint256[] memory)",
                                  "value": "_asSingletonArray"
                                },
                                "id": 2558,
                                "name": "Identifier",
                                "src": "5379:17:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2516,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 2559,
                                "name": "Identifier",
                                "src": "5397:6:5"
                              }
                            ],
                            "id": 2560,
                            "name": "FunctionCall",
                            "src": "5379:25:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2518,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 2561,
                            "name": "Identifier",
                            "src": "5406:4:5"
                          }
                        ],
                        "id": 2562,
                        "name": "FunctionCall",
                        "src": "5315:96:5"
                      }
                    ],
                    "id": 2563,
                    "name": "ExpressionStatement",
                    "src": "5315:96:5"
                  },
                  {
                    "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": 2564,
                                    "name": "Identifier",
                                    "src": "5422:9:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2514,
                                      "type": "uint256",
                                      "value": "id"
                                    },
                                    "id": 2565,
                                    "name": "Identifier",
                                    "src": "5432:2:5"
                                  }
                                ],
                                "id": 2567,
                                "name": "IndexAccess",
                                "src": "5422:13:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2510,
                                  "type": "address",
                                  "value": "from"
                                },
                                "id": 2566,
                                "name": "Identifier",
                                "src": "5436:4:5"
                              }
                            ],
                            "id": 2568,
                            "name": "IndexAccess",
                            "src": "5422:19:5"
                          },
                          {
                            "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"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                      "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sub",
                                  "referencedDeclaration": 4467,
                                  "type": "function (uint256,uint256,string memory) 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": 2569,
                                            "name": "Identifier",
                                            "src": "5444:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2514,
                                              "type": "uint256",
                                              "value": "id"
                                            },
                                            "id": 2570,
                                            "name": "Identifier",
                                            "src": "5454:2:5"
                                          }
                                        ],
                                        "id": 2571,
                                        "name": "IndexAccess",
                                        "src": "5444:13:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2510,
                                          "type": "address",
                                          "value": "from"
                                        },
                                        "id": 2572,
                                        "name": "Identifier",
                                        "src": "5458:4:5"
                                      }
                                    ],
                                    "id": 2573,
                                    "name": "IndexAccess",
                                    "src": "5444:19:5"
                                  }
                                ],
                                "id": 2574,
                                "name": "MemberAccess",
                                "src": "5444:23:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2516,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 2575,
                                "name": "Identifier",
                                "src": "5468:6:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "string",
                                  "type": "literal_string \"ERC1155: insufficient balance for transfer\"",
                                  "value": "ERC1155: insufficient balance for transfer"
                                },
                                "id": 2576,
                                "name": "Literal",
                                "src": "5476:44:5"
                              }
                            ],
                            "id": 2577,
                            "name": "FunctionCall",
                            "src": "5444:77:5"
                          }
                        ],
                        "id": 2578,
                        "name": "Assignment",
                        "src": "5422:99:5"
                      }
                    ],
                    "id": 2579,
                    "name": "ExpressionStatement",
                    "src": "5422:99:5"
                  },
                  {
                    "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": 2580,
                                    "name": "Identifier",
                                    "src": "5531:9:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2514,
                                      "type": "uint256",
                                      "value": "id"
                                    },
                                    "id": 2581,
                                    "name": "Identifier",
                                    "src": "5541:2:5"
                                  }
                                ],
                                "id": 2583,
                                "name": "IndexAccess",
                                "src": "5531:13:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2512,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 2582,
                                "name": "Identifier",
                                "src": "5545:2:5"
                              }
                            ],
                            "id": 2584,
                            "name": "IndexAccess",
                            "src": "5531:17:5"
                          },
                          {
                            "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": {
                                          "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": 2585,
                                            "name": "Identifier",
                                            "src": "5551:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2514,
                                              "type": "uint256",
                                              "value": "id"
                                            },
                                            "id": 2586,
                                            "name": "Identifier",
                                            "src": "5561:2:5"
                                          }
                                        ],
                                        "id": 2587,
                                        "name": "IndexAccess",
                                        "src": "5551:13:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2512,
                                          "type": "address",
                                          "value": "to"
                                        },
                                        "id": 2588,
                                        "name": "Identifier",
                                        "src": "5565:2:5"
                                      }
                                    ],
                                    "id": 2589,
                                    "name": "IndexAccess",
                                    "src": "5551:17:5"
                                  }
                                ],
                                "id": 2590,
                                "name": "MemberAccess",
                                "src": "5551:21:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2516,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 2591,
                                "name": "Identifier",
                                "src": "5573:6:5"
                              }
                            ],
                            "id": 2592,
                            "name": "FunctionCall",
                            "src": "5551:29:5"
                          }
                        ],
                        "id": 2593,
                        "name": "Assignment",
                        "src": "5531:49:5"
                      }
                    ],
                    "id": 2594,
                    "name": "ExpressionStatement",
                    "src": "5531:49:5"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "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": 2595,
                            "name": "Identifier",
                            "src": "5596:14:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2547,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2596,
                            "name": "Identifier",
                            "src": "5611:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2510,
                              "type": "address",
                              "value": "from"
                            },
                            "id": 2597,
                            "name": "Identifier",
                            "src": "5621:4:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2512,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2598,
                            "name": "Identifier",
                            "src": "5627:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2514,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 2599,
                            "name": "Identifier",
                            "src": "5631:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2516,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 2600,
                            "name": "Identifier",
                            "src": "5635:6:5"
                          }
                        ],
                        "id": 2601,
                        "name": "FunctionCall",
                        "src": "5596:46:5"
                      }
                    ],
                    "id": 2602,
                    "name": "EmitStatement",
                    "src": "5591:51:5"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "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": 2603,
                            "name": "Identifier",
                            "src": "5653:30:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2547,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2604,
                            "name": "Identifier",
                            "src": "5684:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2510,
                              "type": "address",
                              "value": "from"
                            },
                            "id": 2605,
                            "name": "Identifier",
                            "src": "5694:4:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2512,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2606,
                            "name": "Identifier",
                            "src": "5700:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2514,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 2607,
                            "name": "Identifier",
                            "src": "5704:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2516,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 2608,
                            "name": "Identifier",
                            "src": "5708:6:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2518,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 2609,
                            "name": "Identifier",
                            "src": "5716:4:5"
                          }
                        ],
                        "id": 2610,
                        "name": "FunctionCall",
                        "src": "5653:68:5"
                      }
                    ],
                    "id": 2611,
                    "name": "ExpressionStatement",
                    "src": "5653:68:5"
                  }
                ],
                "id": 2612,
                "name": "Block",
                "src": "5028:700:5"
              }
            ],
            "id": 2613,
            "name": "FunctionDefinition",
            "src": "4831:897:5"
          },
          {
            "attributes": {
              "baseFunctions": [
                4789
              ],
              "functionSelector": "2eb2c2d6",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "safeBatchTransferFrom",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev See {IERC1155-safeBatchTransferFrom}."
                },
                "id": 2614,
                "name": "StructuredDocumentation",
                "src": "5734:61:5"
              },
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2628,
                "name": "OverrideSpecifier",
                "src": "6009:8:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "from",
                      "scope": 2751,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2615,
                        "name": "ElementaryTypeName",
                        "src": "5840:7:5"
                      }
                    ],
                    "id": 2616,
                    "name": "VariableDeclaration",
                    "src": "5840:12:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 2751,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2617,
                        "name": "ElementaryTypeName",
                        "src": "5862:7:5"
                      }
                    ],
                    "id": 2618,
                    "name": "VariableDeclaration",
                    "src": "5862:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "scope": 2751,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2619,
                            "name": "ElementaryTypeName",
                            "src": "5882:7:5"
                          }
                        ],
                        "id": 2620,
                        "name": "ArrayTypeName",
                        "src": "5882:9:5"
                      }
                    ],
                    "id": 2621,
                    "name": "VariableDeclaration",
                    "src": "5882:20:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amounts",
                      "scope": 2751,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2622,
                            "name": "ElementaryTypeName",
                            "src": "5912:7:5"
                          }
                        ],
                        "id": 2623,
                        "name": "ArrayTypeName",
                        "src": "5912:9:5"
                      }
                    ],
                    "id": 2624,
                    "name": "VariableDeclaration",
                    "src": "5912:24:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2751,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2625,
                        "name": "ElementaryTypeName",
                        "src": "5946:5:5"
                      }
                    ],
                    "id": 2626,
                    "name": "VariableDeclaration",
                    "src": "5946:17:5"
                  }
                ],
                "id": 2627,
                "name": "ParameterList",
                "src": "5830:139:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2629,
                "name": "ParameterList",
                "src": "6022:0:5"
              },
              {
                "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_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                  "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2630,
                            "name": "Identifier",
                            "src": "6032:7:5"
                          },
                          {
                            "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": 2621,
                                      "type": "uint256[] memory",
                                      "value": "ids"
                                    },
                                    "id": 2631,
                                    "name": "Identifier",
                                    "src": "6040:3:5"
                                  }
                                ],
                                "id": 2632,
                                "name": "MemberAccess",
                                "src": "6040:10:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2624,
                                      "type": "uint256[] memory",
                                      "value": "amounts"
                                    },
                                    "id": 2633,
                                    "name": "Identifier",
                                    "src": "6054:7:5"
                                  }
                                ],
                                "id": 2634,
                                "name": "MemberAccess",
                                "src": "6054:14:5"
                              }
                            ],
                            "id": 2635,
                            "name": "BinaryOperation",
                            "src": "6040:28:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: ids and amounts length mismatch\"",
                              "value": "ERC1155: ids and amounts length mismatch"
                            },
                            "id": 2636,
                            "name": "Literal",
                            "src": "6070:42:5"
                          }
                        ],
                        "id": 2637,
                        "name": "FunctionCall",
                        "src": "6032:81:5"
                      }
                    ],
                    "id": 2638,
                    "name": "ExpressionStatement",
                    "src": "6032:81:5"
                  },
                  {
                    "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_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d",
                                  "typeString": "literal_string \"ERC1155: transfer to the zero address\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2639,
                            "name": "Identifier",
                            "src": "6123:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2618,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 2640,
                                "name": "Identifier",
                                "src": "6131:2:5"
                              },
                              {
                                "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": 2641,
                                        "name": "ElementaryTypeName",
                                        "src": "6137:7:5"
                                      }
                                    ],
                                    "id": 2642,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "6137:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2643,
                                    "name": "Literal",
                                    "src": "6145:1:5"
                                  }
                                ],
                                "id": 2644,
                                "name": "FunctionCall",
                                "src": "6137:10:5"
                              }
                            ],
                            "id": 2645,
                            "name": "BinaryOperation",
                            "src": "6131:16:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: transfer to the zero address\"",
                              "value": "ERC1155: transfer to the zero address"
                            },
                            "id": 2646,
                            "name": "Literal",
                            "src": "6149:39:5"
                          }
                        ],
                        "id": 2647,
                        "name": "FunctionCall",
                        "src": "6123:66:5"
                      }
                    ],
                    "id": 2648,
                    "name": "ExpressionStatement",
                    "src": "6123:66:5"
                  },
                  {
                    "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_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686",
                                  "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2649,
                            "name": "Identifier",
                            "src": "6199:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2616,
                                      "type": "address",
                                      "value": "from"
                                    },
                                    "id": 2650,
                                    "name": "Identifier",
                                    "src": "6220:4:5"
                                  },
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address payable",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4312,
                                          "type": "function () view returns (address payable)",
                                          "value": "_msgSender"
                                        },
                                        "id": 2651,
                                        "name": "Identifier",
                                        "src": "6228:10:5"
                                      }
                                    ],
                                    "id": 2652,
                                    "name": "FunctionCall",
                                    "src": "6228:12:5"
                                  }
                                ],
                                "id": 2653,
                                "name": "BinaryOperation",
                                "src": "6220:20:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2507,
                                      "type": "function (address,address) view returns (bool)",
                                      "value": "isApprovedForAll"
                                    },
                                    "id": 2654,
                                    "name": "Identifier",
                                    "src": "6244:16:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2616,
                                      "type": "address",
                                      "value": "from"
                                    },
                                    "id": 2655,
                                    "name": "Identifier",
                                    "src": "6261:4:5"
                                  },
                                  {
                                    "attributes": {
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address payable",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 4312,
                                          "type": "function () view returns (address payable)",
                                          "value": "_msgSender"
                                        },
                                        "id": 2656,
                                        "name": "Identifier",
                                        "src": "6267:10:5"
                                      }
                                    ],
                                    "id": 2657,
                                    "name": "FunctionCall",
                                    "src": "6267:12:5"
                                  }
                                ],
                                "id": 2658,
                                "name": "FunctionCall",
                                "src": "6244:36:5"
                              }
                            ],
                            "id": 2659,
                            "name": "BinaryOperation",
                            "src": "6220:60:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: transfer caller is not owner nor approved\"",
                              "value": "ERC1155: transfer caller is not owner nor approved"
                            },
                            "id": 2660,
                            "name": "Literal",
                            "src": "6294:52:5"
                          }
                        ],
                        "id": 2661,
                        "name": "FunctionCall",
                        "src": "6199:157:5"
                      }
                    ],
                    "id": 2662,
                    "name": "ExpressionStatement",
                    "src": "6199:157:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2664
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "operator",
                          "scope": 2750,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2663,
                            "name": "ElementaryTypeName",
                            "src": "6367:7:5"
                          }
                        ],
                        "id": 2664,
                        "name": "VariableDeclaration",
                        "src": "6367:16:5"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4312,
                              "type": "function () view returns (address payable)",
                              "value": "_msgSender"
                            },
                            "id": 2665,
                            "name": "Identifier",
                            "src": "6386:10:5"
                          }
                        ],
                        "id": 2666,
                        "name": "FunctionCall",
                        "src": "6386:12:5"
                      }
                    ],
                    "id": 2667,
                    "name": "VariableDeclarationStatement",
                    "src": "6367:31:5"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "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": 3135,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_beforeTokenTransfer"
                            },
                            "id": 2668,
                            "name": "Identifier",
                            "src": "6409:20:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2664,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2669,
                            "name": "Identifier",
                            "src": "6430:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2616,
                              "type": "address",
                              "value": "from"
                            },
                            "id": 2670,
                            "name": "Identifier",
                            "src": "6440:4:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2618,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2671,
                            "name": "Identifier",
                            "src": "6446:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2621,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 2672,
                            "name": "Identifier",
                            "src": "6450:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2624,
                              "type": "uint256[] memory",
                              "value": "amounts"
                            },
                            "id": 2673,
                            "name": "Identifier",
                            "src": "6455:7:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2626,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 2674,
                            "name": "Identifier",
                            "src": "6464:4:5"
                          }
                        ],
                        "id": 2675,
                        "name": "FunctionCall",
                        "src": "6409:60:5"
                      }
                    ],
                    "id": 2676,
                    "name": "ExpressionStatement",
                    "src": "6409:60:5"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            2678
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 2732,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 2677,
                                "name": "ElementaryTypeName",
                                "src": "6485:7:5"
                              }
                            ],
                            "id": 2678,
                            "name": "VariableDeclaration",
                            "src": "6485:9:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2679,
                            "name": "Literal",
                            "src": "6497:1:5"
                          }
                        ],
                        "id": 2680,
                        "name": "VariableDeclarationStatement",
                        "src": "6485:13:5"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2678,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 2681,
                            "name": "Identifier",
                            "src": "6500:1:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2621,
                                  "type": "uint256[] memory",
                                  "value": "ids"
                                },
                                "id": 2682,
                                "name": "Identifier",
                                "src": "6504:3:5"
                              }
                            ],
                            "id": 2683,
                            "name": "MemberAccess",
                            "src": "6504:10:5"
                          }
                        ],
                        "id": 2684,
                        "name": "BinaryOperation",
                        "src": "6500:14:5"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2678,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 2685,
                                "name": "Identifier",
                                "src": "6518:1:5"
                              }
                            ],
                            "id": 2686,
                            "name": "UnaryOperation",
                            "src": "6516:3:5"
                          }
                        ],
                        "id": 2687,
                        "name": "ExpressionStatement",
                        "src": "6516:3:5"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                2689
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "scope": 2731,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 2688,
                                    "name": "ElementaryTypeName",
                                    "src": "6535:7:5"
                                  }
                                ],
                                "id": 2689,
                                "name": "VariableDeclaration",
                                "src": "6535:10:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2621,
                                      "type": "uint256[] memory",
                                      "value": "ids"
                                    },
                                    "id": 2690,
                                    "name": "Identifier",
                                    "src": "6548:3:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2678,
                                      "type": "uint256",
                                      "value": "i"
                                    },
                                    "id": 2691,
                                    "name": "Identifier",
                                    "src": "6552:1:5"
                                  }
                                ],
                                "id": 2692,
                                "name": "IndexAccess",
                                "src": "6548:6:5"
                              }
                            ],
                            "id": 2693,
                            "name": "VariableDeclarationStatement",
                            "src": "6535:19:5"
                          },
                          {
                            "attributes": {
                              "assignments": [
                                2695
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "mutability": "mutable",
                                  "name": "amount",
                                  "scope": 2731,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "uint256",
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 2694,
                                    "name": "ElementaryTypeName",
                                    "src": "6568:7:5"
                                  }
                                ],
                                "id": 2695,
                                "name": "VariableDeclaration",
                                "src": "6568:14:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2624,
                                      "type": "uint256[] memory",
                                      "value": "amounts"
                                    },
                                    "id": 2696,
                                    "name": "Identifier",
                                    "src": "6585:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2678,
                                      "type": "uint256",
                                      "value": "i"
                                    },
                                    "id": 2697,
                                    "name": "Identifier",
                                    "src": "6593:1:5"
                                  }
                                ],
                                "id": 2698,
                                "name": "IndexAccess",
                                "src": "6585:10:5"
                              }
                            ],
                            "id": 2699,
                            "name": "VariableDeclarationStatement",
                            "src": "6568:27:5"
                          },
                          {
                            "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": 2700,
                                            "name": "Identifier",
                                            "src": "6610:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2689,
                                              "type": "uint256",
                                              "value": "id"
                                            },
                                            "id": 2701,
                                            "name": "Identifier",
                                            "src": "6620:2:5"
                                          }
                                        ],
                                        "id": 2703,
                                        "name": "IndexAccess",
                                        "src": "6610:13:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2616,
                                          "type": "address",
                                          "value": "from"
                                        },
                                        "id": 2702,
                                        "name": "Identifier",
                                        "src": "6624:4:5"
                                      }
                                    ],
                                    "id": 2704,
                                    "name": "IndexAccess",
                                    "src": "6610:19:5"
                                  },
                                  {
                                    "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"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf",
                                              "typeString": "literal_string \"ERC1155: insufficient balance for transfer\""
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sub",
                                          "referencedDeclaration": 4467,
                                          "type": "function (uint256,uint256,string memory) 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": 2705,
                                                    "name": "Identifier",
                                                    "src": "6632:9:5"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2689,
                                                      "type": "uint256",
                                                      "value": "id"
                                                    },
                                                    "id": 2706,
                                                    "name": "Identifier",
                                                    "src": "6642:2:5"
                                                  }
                                                ],
                                                "id": 2707,
                                                "name": "IndexAccess",
                                                "src": "6632:13:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2616,
                                                  "type": "address",
                                                  "value": "from"
                                                },
                                                "id": 2708,
                                                "name": "Identifier",
                                                "src": "6646:4:5"
                                              }
                                            ],
                                            "id": 2709,
                                            "name": "IndexAccess",
                                            "src": "6632:19:5"
                                          }
                                        ],
                                        "id": 2710,
                                        "name": "MemberAccess",
                                        "src": "6632:23:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2695,
                                          "type": "uint256",
                                          "value": "amount"
                                        },
                                        "id": 2711,
                                        "name": "Identifier",
                                        "src": "6673:6:5"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "string",
                                          "type": "literal_string \"ERC1155: insufficient balance for transfer\"",
                                          "value": "ERC1155: insufficient balance for transfer"
                                        },
                                        "id": 2712,
                                        "name": "Literal",
                                        "src": "6697:44:5"
                                      }
                                    ],
                                    "id": 2713,
                                    "name": "FunctionCall",
                                    "src": "6632:123:5"
                                  }
                                ],
                                "id": 2714,
                                "name": "Assignment",
                                "src": "6610:145:5"
                              }
                            ],
                            "id": 2715,
                            "name": "ExpressionStatement",
                            "src": "6610:145:5"
                          },
                          {
                            "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": 2716,
                                            "name": "Identifier",
                                            "src": "6769:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2689,
                                              "type": "uint256",
                                              "value": "id"
                                            },
                                            "id": 2717,
                                            "name": "Identifier",
                                            "src": "6779:2:5"
                                          }
                                        ],
                                        "id": 2719,
                                        "name": "IndexAccess",
                                        "src": "6769:13:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2618,
                                          "type": "address",
                                          "value": "to"
                                        },
                                        "id": 2718,
                                        "name": "Identifier",
                                        "src": "6783:2:5"
                                      }
                                    ],
                                    "id": 2720,
                                    "name": "IndexAccess",
                                    "src": "6769:17:5"
                                  },
                                  {
                                    "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": {
                                                  "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": 2721,
                                                    "name": "Identifier",
                                                    "src": "6789:9:5"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2689,
                                                      "type": "uint256",
                                                      "value": "id"
                                                    },
                                                    "id": 2722,
                                                    "name": "Identifier",
                                                    "src": "6799:2:5"
                                                  }
                                                ],
                                                "id": 2723,
                                                "name": "IndexAccess",
                                                "src": "6789:13:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2618,
                                                  "type": "address",
                                                  "value": "to"
                                                },
                                                "id": 2724,
                                                "name": "Identifier",
                                                "src": "6803:2:5"
                                              }
                                            ],
                                            "id": 2725,
                                            "name": "IndexAccess",
                                            "src": "6789:17:5"
                                          }
                                        ],
                                        "id": 2726,
                                        "name": "MemberAccess",
                                        "src": "6789:21:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2695,
                                          "type": "uint256",
                                          "value": "amount"
                                        },
                                        "id": 2727,
                                        "name": "Identifier",
                                        "src": "6811:6:5"
                                      }
                                    ],
                                    "id": 2728,
                                    "name": "FunctionCall",
                                    "src": "6789:29:5"
                                  }
                                ],
                                "id": 2729,
                                "name": "Assignment",
                                "src": "6769:49:5"
                              }
                            ],
                            "id": 2730,
                            "name": "ExpressionStatement",
                            "src": "6769:49:5"
                          }
                        ],
                        "id": 2731,
                        "name": "Block",
                        "src": "6521:308:5"
                      }
                    ],
                    "id": 2732,
                    "name": "ForStatement",
                    "src": "6480:349:5"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "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": 2733,
                            "name": "Identifier",
                            "src": "6844:13:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2664,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2734,
                            "name": "Identifier",
                            "src": "6858:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2616,
                              "type": "address",
                              "value": "from"
                            },
                            "id": 2735,
                            "name": "Identifier",
                            "src": "6868:4:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2618,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2736,
                            "name": "Identifier",
                            "src": "6874:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2621,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 2737,
                            "name": "Identifier",
                            "src": "6878:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2624,
                              "type": "uint256[] memory",
                              "value": "amounts"
                            },
                            "id": 2738,
                            "name": "Identifier",
                            "src": "6883:7:5"
                          }
                        ],
                        "id": 2739,
                        "name": "FunctionCall",
                        "src": "6844:47:5"
                      }
                    ],
                    "id": 2740,
                    "name": "EmitStatement",
                    "src": "6839:52:5"
                  },
                  {
                    "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_address",
                                  "typeString": "address"
                                },
                                {
                                  "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": 2741,
                            "name": "Identifier",
                            "src": "6902:35:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2664,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2742,
                            "name": "Identifier",
                            "src": "6938:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2616,
                              "type": "address",
                              "value": "from"
                            },
                            "id": 2743,
                            "name": "Identifier",
                            "src": "6948:4:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2618,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2744,
                            "name": "Identifier",
                            "src": "6954:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2621,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 2745,
                            "name": "Identifier",
                            "src": "6958:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2624,
                              "type": "uint256[] memory",
                              "value": "amounts"
                            },
                            "id": 2746,
                            "name": "Identifier",
                            "src": "6963:7:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2626,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 2747,
                            "name": "Identifier",
                            "src": "6972:4:5"
                          }
                        ],
                        "id": 2748,
                        "name": "FunctionCall",
                        "src": "6902:75:5"
                      }
                    ],
                    "id": 2749,
                    "name": "ExpressionStatement",
                    "src": "6902:75:5"
                  }
                ],
                "id": 2750,
                "name": "Block",
                "src": "6022:962:5"
              }
            ],
            "id": 2751,
            "name": "FunctionDefinition",
            "src": "5800:1184:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_setURI",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Sets a new URI for all token types, by relying on the token type ID\n substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n URI or any of the amounts in the JSON file at said URI will be replaced by\n clients with the token type ID.\n For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n interpreted by clients as\n `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n for token type ID 0x4cce0.\n See {uri}.\n Because these URIs cannot be meaningfully represented by the {URI} event,\n this function emits no events."
                },
                "id": 2752,
                "name": "StructuredDocumentation",
                "src": "6990:812:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "newuri",
                      "scope": 2762,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "string",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string"
                        },
                        "id": 2753,
                        "name": "ElementaryTypeName",
                        "src": "7824:6:5"
                      }
                    ],
                    "id": 2754,
                    "name": "VariableDeclaration",
                    "src": "7824:20:5"
                  }
                ],
                "id": 2755,
                "name": "ParameterList",
                "src": "7823:22:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2756,
                "name": "ParameterList",
                "src": "7863:0:5"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "string storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2313,
                              "type": "string storage ref",
                              "value": "_uri"
                            },
                            "id": 2757,
                            "name": "Identifier",
                            "src": "7873:4:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2754,
                              "type": "string memory",
                              "value": "newuri"
                            },
                            "id": 2758,
                            "name": "Identifier",
                            "src": "7880:6:5"
                          }
                        ],
                        "id": 2759,
                        "name": "Assignment",
                        "src": "7873:13:5"
                      }
                    ],
                    "id": 2760,
                    "name": "ExpressionStatement",
                    "src": "7873:13:5"
                  }
                ],
                "id": 2761,
                "name": "Block",
                "src": "7863:30:5"
              }
            ],
            "id": 2762,
            "name": "FunctionDefinition",
            "src": "7807:86:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_mint",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.\n Emits a {TransferSingle} event.\n Requirements:\n - `account` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value."
                },
                "id": 2763,
                "name": "StructuredDocumentation",
                "src": "7899:372:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "account",
                      "scope": 2844,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2764,
                        "name": "ElementaryTypeName",
                        "src": "8291:7:5"
                      }
                    ],
                    "id": 2765,
                    "name": "VariableDeclaration",
                    "src": "8291:15:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 2844,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2766,
                        "name": "ElementaryTypeName",
                        "src": "8308:7:5"
                      }
                    ],
                    "id": 2767,
                    "name": "VariableDeclaration",
                    "src": "8308:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 2844,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2768,
                        "name": "ElementaryTypeName",
                        "src": "8320:7:5"
                      }
                    ],
                    "id": 2769,
                    "name": "VariableDeclaration",
                    "src": "8320:14:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2844,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2770,
                        "name": "ElementaryTypeName",
                        "src": "8336:5:5"
                      }
                    ],
                    "id": 2771,
                    "name": "VariableDeclaration",
                    "src": "8336:17:5"
                  }
                ],
                "id": 2772,
                "name": "ParameterList",
                "src": "8290:64:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2773,
                "name": "ParameterList",
                "src": "8372:0:5"
              },
              {
                "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": 2774,
                            "name": "Identifier",
                            "src": "8382:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2765,
                                  "type": "address",
                                  "value": "account"
                                },
                                "id": 2775,
                                "name": "Identifier",
                                "src": "8390:7:5"
                              },
                              {
                                "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": 2776,
                                        "name": "ElementaryTypeName",
                                        "src": "8401:7:5"
                                      }
                                    ],
                                    "id": 2777,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8401:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2778,
                                    "name": "Literal",
                                    "src": "8409:1:5"
                                  }
                                ],
                                "id": 2779,
                                "name": "FunctionCall",
                                "src": "8401:10:5"
                              }
                            ],
                            "id": 2780,
                            "name": "BinaryOperation",
                            "src": "8390:21:5"
                          },
                          {
                            "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": 2781,
                            "name": "Literal",
                            "src": "8413:35:5"
                          }
                        ],
                        "id": 2782,
                        "name": "FunctionCall",
                        "src": "8382:67:5"
                      }
                    ],
                    "id": 2783,
                    "name": "ExpressionStatement",
                    "src": "8382:67:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2785
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "operator",
                          "scope": 2843,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2784,
                            "name": "ElementaryTypeName",
                            "src": "8460:7:5"
                          }
                        ],
                        "id": 2785,
                        "name": "VariableDeclaration",
                        "src": "8460:16:5"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4312,
                              "type": "function () view returns (address payable)",
                              "value": "_msgSender"
                            },
                            "id": 2786,
                            "name": "Identifier",
                            "src": "8479:10:5"
                          }
                        ],
                        "id": 2787,
                        "name": "FunctionCall",
                        "src": "8479:12:5"
                      }
                    ],
                    "id": 2788,
                    "name": "VariableDeclarationStatement",
                    "src": "8460:31:5"
                  },
                  {
                    "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_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": 3135,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_beforeTokenTransfer"
                            },
                            "id": 2789,
                            "name": "Identifier",
                            "src": "8502:20:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2785,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2790,
                            "name": "Identifier",
                            "src": "8523:8:5"
                          },
                          {
                            "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": 2791,
                                    "name": "ElementaryTypeName",
                                    "src": "8533:7:5"
                                  }
                                ],
                                "id": 2792,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8533:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2793,
                                "name": "Literal",
                                "src": "8541:1:5"
                              }
                            ],
                            "id": 2794,
                            "name": "FunctionCall",
                            "src": "8533:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2765,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 2795,
                            "name": "Identifier",
                            "src": "8545:7:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256[] memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3295,
                                  "type": "function (uint256) pure returns (uint256[] memory)",
                                  "value": "_asSingletonArray"
                                },
                                "id": 2796,
                                "name": "Identifier",
                                "src": "8554:17:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2767,
                                  "type": "uint256",
                                  "value": "id"
                                },
                                "id": 2797,
                                "name": "Identifier",
                                "src": "8572:2:5"
                              }
                            ],
                            "id": 2798,
                            "name": "FunctionCall",
                            "src": "8554:21:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256[] memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3295,
                                  "type": "function (uint256) pure returns (uint256[] memory)",
                                  "value": "_asSingletonArray"
                                },
                                "id": 2799,
                                "name": "Identifier",
                                "src": "8577:17:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2769,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 2800,
                                "name": "Identifier",
                                "src": "8595:6:5"
                              }
                            ],
                            "id": 2801,
                            "name": "FunctionCall",
                            "src": "8577:25:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2771,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 2802,
                            "name": "Identifier",
                            "src": "8604:4:5"
                          }
                        ],
                        "id": 2803,
                        "name": "FunctionCall",
                        "src": "8502:107:5"
                      }
                    ],
                    "id": 2804,
                    "name": "ExpressionStatement",
                    "src": "8502:107:5"
                  },
                  {
                    "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": 2805,
                                    "name": "Identifier",
                                    "src": "8620:9:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2767,
                                      "type": "uint256",
                                      "value": "id"
                                    },
                                    "id": 2806,
                                    "name": "Identifier",
                                    "src": "8630:2:5"
                                  }
                                ],
                                "id": 2808,
                                "name": "IndexAccess",
                                "src": "8620:13:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2765,
                                  "type": "address",
                                  "value": "account"
                                },
                                "id": 2807,
                                "name": "Identifier",
                                "src": "8634:7:5"
                              }
                            ],
                            "id": 2809,
                            "name": "IndexAccess",
                            "src": "8620:22:5"
                          },
                          {
                            "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": {
                                          "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": 2810,
                                            "name": "Identifier",
                                            "src": "8645:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2767,
                                              "type": "uint256",
                                              "value": "id"
                                            },
                                            "id": 2811,
                                            "name": "Identifier",
                                            "src": "8655:2:5"
                                          }
                                        ],
                                        "id": 2812,
                                        "name": "IndexAccess",
                                        "src": "8645:13:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2765,
                                          "type": "address",
                                          "value": "account"
                                        },
                                        "id": 2813,
                                        "name": "Identifier",
                                        "src": "8659:7:5"
                                      }
                                    ],
                                    "id": 2814,
                                    "name": "IndexAccess",
                                    "src": "8645:22:5"
                                  }
                                ],
                                "id": 2815,
                                "name": "MemberAccess",
                                "src": "8645:26:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2769,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 2816,
                                "name": "Identifier",
                                "src": "8672:6:5"
                              }
                            ],
                            "id": 2817,
                            "name": "FunctionCall",
                            "src": "8645:34:5"
                          }
                        ],
                        "id": 2818,
                        "name": "Assignment",
                        "src": "8620:59:5"
                      }
                    ],
                    "id": 2819,
                    "name": "ExpressionStatement",
                    "src": "8620:59:5"
                  },
                  {
                    "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_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": 2820,
                            "name": "Identifier",
                            "src": "8694:14:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2785,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2821,
                            "name": "Identifier",
                            "src": "8709:8:5"
                          },
                          {
                            "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": 2822,
                                    "name": "ElementaryTypeName",
                                    "src": "8719:7:5"
                                  }
                                ],
                                "id": 2823,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8719:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2824,
                                "name": "Literal",
                                "src": "8727:1:5"
                              }
                            ],
                            "id": 2825,
                            "name": "FunctionCall",
                            "src": "8719:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2765,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 2826,
                            "name": "Identifier",
                            "src": "8731:7:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2767,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 2827,
                            "name": "Identifier",
                            "src": "8740:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2769,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 2828,
                            "name": "Identifier",
                            "src": "8744:6:5"
                          }
                        ],
                        "id": 2829,
                        "name": "FunctionCall",
                        "src": "8694:57:5"
                      }
                    ],
                    "id": 2830,
                    "name": "EmitStatement",
                    "src": "8689:62:5"
                  },
                  {
                    "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_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": 2831,
                            "name": "Identifier",
                            "src": "8762:30:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2785,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2832,
                            "name": "Identifier",
                            "src": "8793:8:5"
                          },
                          {
                            "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": 2833,
                                    "name": "ElementaryTypeName",
                                    "src": "8803:7:5"
                                  }
                                ],
                                "id": 2834,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8803:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2835,
                                "name": "Literal",
                                "src": "8811:1:5"
                              }
                            ],
                            "id": 2836,
                            "name": "FunctionCall",
                            "src": "8803:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2765,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 2837,
                            "name": "Identifier",
                            "src": "8815:7:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2767,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 2838,
                            "name": "Identifier",
                            "src": "8824:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2769,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 2839,
                            "name": "Identifier",
                            "src": "8828:6:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2771,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 2840,
                            "name": "Identifier",
                            "src": "8836:4:5"
                          }
                        ],
                        "id": 2841,
                        "name": "FunctionCall",
                        "src": "8762:79:5"
                      }
                    ],
                    "id": 2842,
                    "name": "ExpressionStatement",
                    "src": "8762:79:5"
                  }
                ],
                "id": 2843,
                "name": "Block",
                "src": "8372:476:5"
              }
            ],
            "id": 2844,
            "name": "FunctionDefinition",
            "src": "8276:572:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_mintBatch",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value."
                },
                "id": 2845,
                "name": "StructuredDocumentation",
                "src": "8854:334:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 2952,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2846,
                        "name": "ElementaryTypeName",
                        "src": "9213:7:5"
                      }
                    ],
                    "id": 2847,
                    "name": "VariableDeclaration",
                    "src": "9213:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "scope": 2952,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2848,
                            "name": "ElementaryTypeName",
                            "src": "9225:7:5"
                          }
                        ],
                        "id": 2849,
                        "name": "ArrayTypeName",
                        "src": "9225:9:5"
                      }
                    ],
                    "id": 2850,
                    "name": "VariableDeclaration",
                    "src": "9225:20:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amounts",
                      "scope": 2952,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 2851,
                            "name": "ElementaryTypeName",
                            "src": "9247:7:5"
                          }
                        ],
                        "id": 2852,
                        "name": "ArrayTypeName",
                        "src": "9247:9:5"
                      }
                    ],
                    "id": 2853,
                    "name": "VariableDeclaration",
                    "src": "9247:24:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2952,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2854,
                        "name": "ElementaryTypeName",
                        "src": "9273:5:5"
                      }
                    ],
                    "id": 2855,
                    "name": "VariableDeclaration",
                    "src": "9273:17:5"
                  }
                ],
                "id": 2856,
                "name": "ParameterList",
                "src": "9212:79:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2857,
                "name": "ParameterList",
                "src": "9309:0:5"
              },
              {
                "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": 2858,
                            "name": "Identifier",
                            "src": "9319:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2847,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 2859,
                                "name": "Identifier",
                                "src": "9327:2:5"
                              },
                              {
                                "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": 2860,
                                        "name": "ElementaryTypeName",
                                        "src": "9333:7:5"
                                      }
                                    ],
                                    "id": 2861,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "9333:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2862,
                                    "name": "Literal",
                                    "src": "9341:1:5"
                                  }
                                ],
                                "id": 2863,
                                "name": "FunctionCall",
                                "src": "9333:10:5"
                              }
                            ],
                            "id": 2864,
                            "name": "BinaryOperation",
                            "src": "9327:16:5"
                          },
                          {
                            "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": 2865,
                            "name": "Literal",
                            "src": "9345:35:5"
                          }
                        ],
                        "id": 2866,
                        "name": "FunctionCall",
                        "src": "9319:62:5"
                      }
                    ],
                    "id": 2867,
                    "name": "ExpressionStatement",
                    "src": "9319:62:5"
                  },
                  {
                    "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_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                  "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2868,
                            "name": "Identifier",
                            "src": "9391:7:5"
                          },
                          {
                            "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": 2850,
                                      "type": "uint256[] memory",
                                      "value": "ids"
                                    },
                                    "id": 2869,
                                    "name": "Identifier",
                                    "src": "9399:3:5"
                                  }
                                ],
                                "id": 2870,
                                "name": "MemberAccess",
                                "src": "9399:10:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2853,
                                      "type": "uint256[] memory",
                                      "value": "amounts"
                                    },
                                    "id": 2871,
                                    "name": "Identifier",
                                    "src": "9413:7:5"
                                  }
                                ],
                                "id": 2872,
                                "name": "MemberAccess",
                                "src": "9413:14:5"
                              }
                            ],
                            "id": 2873,
                            "name": "BinaryOperation",
                            "src": "9399:28:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: ids and amounts length mismatch\"",
                              "value": "ERC1155: ids and amounts length mismatch"
                            },
                            "id": 2874,
                            "name": "Literal",
                            "src": "9429:42:5"
                          }
                        ],
                        "id": 2875,
                        "name": "FunctionCall",
                        "src": "9391:81:5"
                      }
                    ],
                    "id": 2876,
                    "name": "ExpressionStatement",
                    "src": "9391:81:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2878
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "operator",
                          "scope": 2951,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2877,
                            "name": "ElementaryTypeName",
                            "src": "9483:7:5"
                          }
                        ],
                        "id": 2878,
                        "name": "VariableDeclaration",
                        "src": "9483:16:5"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4312,
                              "type": "function () view returns (address payable)",
                              "value": "_msgSender"
                            },
                            "id": 2879,
                            "name": "Identifier",
                            "src": "9502:10:5"
                          }
                        ],
                        "id": 2880,
                        "name": "FunctionCall",
                        "src": "9502:12:5"
                      }
                    ],
                    "id": 2881,
                    "name": "VariableDeclarationStatement",
                    "src": "9483:31:5"
                  },
                  {
                    "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_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": 3135,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_beforeTokenTransfer"
                            },
                            "id": 2882,
                            "name": "Identifier",
                            "src": "9525:20:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2878,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2883,
                            "name": "Identifier",
                            "src": "9546:8:5"
                          },
                          {
                            "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": 2884,
                                    "name": "ElementaryTypeName",
                                    "src": "9556:7:5"
                                  }
                                ],
                                "id": 2885,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9556:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2886,
                                "name": "Literal",
                                "src": "9564:1:5"
                              }
                            ],
                            "id": 2887,
                            "name": "FunctionCall",
                            "src": "9556:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2847,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2888,
                            "name": "Identifier",
                            "src": "9568:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2850,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 2889,
                            "name": "Identifier",
                            "src": "9572:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2853,
                              "type": "uint256[] memory",
                              "value": "amounts"
                            },
                            "id": 2890,
                            "name": "Identifier",
                            "src": "9577:7:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2855,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 2891,
                            "name": "Identifier",
                            "src": "9586:4:5"
                          }
                        ],
                        "id": 2892,
                        "name": "FunctionCall",
                        "src": "9525:66:5"
                      }
                    ],
                    "id": 2893,
                    "name": "ExpressionStatement",
                    "src": "9525:66:5"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            2895
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 2927,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 2894,
                                "name": "ElementaryTypeName",
                                "src": "9607:4:5"
                              }
                            ],
                            "id": 2895,
                            "name": "VariableDeclaration",
                            "src": "9607:6:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2896,
                            "name": "Literal",
                            "src": "9616:1:5"
                          }
                        ],
                        "id": 2897,
                        "name": "VariableDeclarationStatement",
                        "src": "9607:10:5"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2895,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 2898,
                            "name": "Identifier",
                            "src": "9619:1:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2850,
                                  "type": "uint256[] memory",
                                  "value": "ids"
                                },
                                "id": 2899,
                                "name": "Identifier",
                                "src": "9623:3:5"
                              }
                            ],
                            "id": 2900,
                            "name": "MemberAccess",
                            "src": "9623:10:5"
                          }
                        ],
                        "id": 2901,
                        "name": "BinaryOperation",
                        "src": "9619:14:5"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2895,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 2902,
                                "name": "Identifier",
                                "src": "9635:1:5"
                              }
                            ],
                            "id": 2903,
                            "name": "UnaryOperation",
                            "src": "9635:3:5"
                          }
                        ],
                        "id": 2904,
                        "name": "ExpressionStatement",
                        "src": "9635:3:5"
                      },
                      {
                        "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": 2905,
                                            "name": "Identifier",
                                            "src": "9654:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2850,
                                                  "type": "uint256[] memory",
                                                  "value": "ids"
                                                },
                                                "id": 2906,
                                                "name": "Identifier",
                                                "src": "9664:3:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2895,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 2907,
                                                "name": "Identifier",
                                                "src": "9668:1:5"
                                              }
                                            ],
                                            "id": 2908,
                                            "name": "IndexAccess",
                                            "src": "9664:6:5"
                                          }
                                        ],
                                        "id": 2910,
                                        "name": "IndexAccess",
                                        "src": "9654:17:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2847,
                                          "type": "address",
                                          "value": "to"
                                        },
                                        "id": 2909,
                                        "name": "Identifier",
                                        "src": "9672:2:5"
                                      }
                                    ],
                                    "id": 2911,
                                    "name": "IndexAccess",
                                    "src": "9654:21:5"
                                  },
                                  {
                                    "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": 2853,
                                                  "type": "uint256[] memory",
                                                  "value": "amounts"
                                                },
                                                "id": 2912,
                                                "name": "Identifier",
                                                "src": "9678:7:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2895,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 2913,
                                                "name": "Identifier",
                                                "src": "9686:1:5"
                                              }
                                            ],
                                            "id": 2914,
                                            "name": "IndexAccess",
                                            "src": "9678:10:5"
                                          }
                                        ],
                                        "id": 2915,
                                        "name": "MemberAccess",
                                        "src": "9678:14:5"
                                      },
                                      {
                                        "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": 2916,
                                                "name": "Identifier",
                                                "src": "9693:9:5"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2850,
                                                      "type": "uint256[] memory",
                                                      "value": "ids"
                                                    },
                                                    "id": 2917,
                                                    "name": "Identifier",
                                                    "src": "9703:3:5"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 2895,
                                                      "type": "uint256",
                                                      "value": "i"
                                                    },
                                                    "id": 2918,
                                                    "name": "Identifier",
                                                    "src": "9707:1:5"
                                                  }
                                                ],
                                                "id": 2919,
                                                "name": "IndexAccess",
                                                "src": "9703:6:5"
                                              }
                                            ],
                                            "id": 2920,
                                            "name": "IndexAccess",
                                            "src": "9693:17:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2847,
                                              "type": "address",
                                              "value": "to"
                                            },
                                            "id": 2921,
                                            "name": "Identifier",
                                            "src": "9711:2:5"
                                          }
                                        ],
                                        "id": 2922,
                                        "name": "IndexAccess",
                                        "src": "9693:21:5"
                                      }
                                    ],
                                    "id": 2923,
                                    "name": "FunctionCall",
                                    "src": "9678:37:5"
                                  }
                                ],
                                "id": 2924,
                                "name": "Assignment",
                                "src": "9654:61:5"
                              }
                            ],
                            "id": 2925,
                            "name": "ExpressionStatement",
                            "src": "9654:61:5"
                          }
                        ],
                        "id": 2926,
                        "name": "Block",
                        "src": "9640:86:5"
                      }
                    ],
                    "id": 2927,
                    "name": "ForStatement",
                    "src": "9602:124:5"
                  },
                  {
                    "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_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": 2928,
                            "name": "Identifier",
                            "src": "9741:13:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2878,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2929,
                            "name": "Identifier",
                            "src": "9755:8:5"
                          },
                          {
                            "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": 2930,
                                    "name": "ElementaryTypeName",
                                    "src": "9765:7:5"
                                  }
                                ],
                                "id": 2931,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9765:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2932,
                                "name": "Literal",
                                "src": "9773:1:5"
                              }
                            ],
                            "id": 2933,
                            "name": "FunctionCall",
                            "src": "9765:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2847,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2934,
                            "name": "Identifier",
                            "src": "9777:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2850,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 2935,
                            "name": "Identifier",
                            "src": "9781:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2853,
                              "type": "uint256[] memory",
                              "value": "amounts"
                            },
                            "id": 2936,
                            "name": "Identifier",
                            "src": "9786:7:5"
                          }
                        ],
                        "id": 2937,
                        "name": "FunctionCall",
                        "src": "9741:53:5"
                      }
                    ],
                    "id": 2938,
                    "name": "EmitStatement",
                    "src": "9736:58:5"
                  },
                  {
                    "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_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": 2939,
                            "name": "Identifier",
                            "src": "9805:35:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2878,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2940,
                            "name": "Identifier",
                            "src": "9841:8:5"
                          },
                          {
                            "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": 2941,
                                    "name": "ElementaryTypeName",
                                    "src": "9851:7:5"
                                  }
                                ],
                                "id": 2942,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9851:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2943,
                                "name": "Literal",
                                "src": "9859:1:5"
                              }
                            ],
                            "id": 2944,
                            "name": "FunctionCall",
                            "src": "9851:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2847,
                              "type": "address",
                              "value": "to"
                            },
                            "id": 2945,
                            "name": "Identifier",
                            "src": "9863:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2850,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 2946,
                            "name": "Identifier",
                            "src": "9867:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2853,
                              "type": "uint256[] memory",
                              "value": "amounts"
                            },
                            "id": 2947,
                            "name": "Identifier",
                            "src": "9872:7:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2855,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 2948,
                            "name": "Identifier",
                            "src": "9881:4:5"
                          }
                        ],
                        "id": 2949,
                        "name": "FunctionCall",
                        "src": "9805:81:5"
                      }
                    ],
                    "id": 2950,
                    "name": "ExpressionStatement",
                    "src": "9805:81:5"
                  }
                ],
                "id": 2951,
                "name": "Block",
                "src": "9309:584:5"
              }
            ],
            "id": 2952,
            "name": "FunctionDefinition",
            "src": "9193:700:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_burn",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Destroys `amount` tokens of token type `id` from `account`\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens of token type `id`."
                },
                "id": 2953,
                "name": "StructuredDocumentation",
                "src": "9899:238:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "account",
                      "scope": 3021,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2954,
                        "name": "ElementaryTypeName",
                        "src": "10157:7:5"
                      }
                    ],
                    "id": 2955,
                    "name": "VariableDeclaration",
                    "src": "10157:15:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 3021,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2956,
                        "name": "ElementaryTypeName",
                        "src": "10174:7:5"
                      }
                    ],
                    "id": 2957,
                    "name": "VariableDeclaration",
                    "src": "10174:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 3021,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2958,
                        "name": "ElementaryTypeName",
                        "src": "10186:7:5"
                      }
                    ],
                    "id": 2959,
                    "name": "VariableDeclaration",
                    "src": "10186:14:5"
                  }
                ],
                "id": 2960,
                "name": "ParameterList",
                "src": "10156:45:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2961,
                "name": "ParameterList",
                "src": "10219:0:5"
              },
              {
                "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_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                                  "typeString": "literal_string \"ERC1155: burn from the zero address\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2962,
                            "name": "Identifier",
                            "src": "10229:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2955,
                                  "type": "address",
                                  "value": "account"
                                },
                                "id": 2963,
                                "name": "Identifier",
                                "src": "10237:7:5"
                              },
                              {
                                "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": 2964,
                                        "name": "ElementaryTypeName",
                                        "src": "10248:7:5"
                                      }
                                    ],
                                    "id": 2965,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "10248:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2966,
                                    "name": "Literal",
                                    "src": "10256:1:5"
                                  }
                                ],
                                "id": 2967,
                                "name": "FunctionCall",
                                "src": "10248:10:5"
                              }
                            ],
                            "id": 2968,
                            "name": "BinaryOperation",
                            "src": "10237:21:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: burn from the zero address\"",
                              "value": "ERC1155: burn from the zero address"
                            },
                            "id": 2969,
                            "name": "Literal",
                            "src": "10260:37:5"
                          }
                        ],
                        "id": 2970,
                        "name": "FunctionCall",
                        "src": "10229:69:5"
                      }
                    ],
                    "id": 2971,
                    "name": "ExpressionStatement",
                    "src": "10229:69:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2973
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "operator",
                          "scope": 3020,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2972,
                            "name": "ElementaryTypeName",
                            "src": "10309:7:5"
                          }
                        ],
                        "id": 2973,
                        "name": "VariableDeclaration",
                        "src": "10309:16:5"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4312,
                              "type": "function () view returns (address payable)",
                              "value": "_msgSender"
                            },
                            "id": 2974,
                            "name": "Identifier",
                            "src": "10328:10:5"
                          }
                        ],
                        "id": 2975,
                        "name": "FunctionCall",
                        "src": "10328:12:5"
                      }
                    ],
                    "id": 2976,
                    "name": "VariableDeclarationStatement",
                    "src": "10309:31:5"
                  },
                  {
                    "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_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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3135,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_beforeTokenTransfer"
                            },
                            "id": 2977,
                            "name": "Identifier",
                            "src": "10351:20:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2973,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 2978,
                            "name": "Identifier",
                            "src": "10372:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2955,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 2979,
                            "name": "Identifier",
                            "src": "10382:7:5"
                          },
                          {
                            "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": 2980,
                                    "name": "ElementaryTypeName",
                                    "src": "10391:7:5"
                                  }
                                ],
                                "id": 2981,
                                "name": "ElementaryTypeNameExpression",
                                "src": "10391:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2982,
                                "name": "Literal",
                                "src": "10399:1:5"
                              }
                            ],
                            "id": 2983,
                            "name": "FunctionCall",
                            "src": "10391:10:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256[] memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3295,
                                  "type": "function (uint256) pure returns (uint256[] memory)",
                                  "value": "_asSingletonArray"
                                },
                                "id": 2984,
                                "name": "Identifier",
                                "src": "10403:17:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2957,
                                  "type": "uint256",
                                  "value": "id"
                                },
                                "id": 2985,
                                "name": "Identifier",
                                "src": "10421:2:5"
                              }
                            ],
                            "id": 2986,
                            "name": "FunctionCall",
                            "src": "10403:21:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256[] memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3295,
                                  "type": "function (uint256) pure returns (uint256[] memory)",
                                  "value": "_asSingletonArray"
                                },
                                "id": 2987,
                                "name": "Identifier",
                                "src": "10426:17:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2959,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 2988,
                                "name": "Identifier",
                                "src": "10444:6:5"
                              }
                            ],
                            "id": 2989,
                            "name": "FunctionCall",
                            "src": "10426:25:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"\"",
                              "value": ""
                            },
                            "id": 2990,
                            "name": "Literal",
                            "src": "10453:2:5"
                          }
                        ],
                        "id": 2991,
                        "name": "FunctionCall",
                        "src": "10351:105:5"
                      }
                    ],
                    "id": 2992,
                    "name": "ExpressionStatement",
                    "src": "10351:105:5"
                  },
                  {
                    "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": 2993,
                                    "name": "Identifier",
                                    "src": "10467:9:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2957,
                                      "type": "uint256",
                                      "value": "id"
                                    },
                                    "id": 2994,
                                    "name": "Identifier",
                                    "src": "10477:2:5"
                                  }
                                ],
                                "id": 2996,
                                "name": "IndexAccess",
                                "src": "10467:13:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2955,
                                  "type": "address",
                                  "value": "account"
                                },
                                "id": 2995,
                                "name": "Identifier",
                                "src": "10481:7:5"
                              }
                            ],
                            "id": 2997,
                            "name": "IndexAccess",
                            "src": "10467:22:5"
                          },
                          {
                            "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"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                      "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sub",
                                  "referencedDeclaration": 4467,
                                  "type": "function (uint256,uint256,string memory) 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": 2998,
                                            "name": "Identifier",
                                            "src": "10492:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 2957,
                                              "type": "uint256",
                                              "value": "id"
                                            },
                                            "id": 2999,
                                            "name": "Identifier",
                                            "src": "10502:2:5"
                                          }
                                        ],
                                        "id": 3000,
                                        "name": "IndexAccess",
                                        "src": "10492:13:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2955,
                                          "type": "address",
                                          "value": "account"
                                        },
                                        "id": 3001,
                                        "name": "Identifier",
                                        "src": "10506:7:5"
                                      }
                                    ],
                                    "id": 3002,
                                    "name": "IndexAccess",
                                    "src": "10492:22:5"
                                  }
                                ],
                                "id": 3003,
                                "name": "MemberAccess",
                                "src": "10492:26:5"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2959,
                                  "type": "uint256",
                                  "value": "amount"
                                },
                                "id": 3004,
                                "name": "Identifier",
                                "src": "10532:6:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "string",
                                  "type": "literal_string \"ERC1155: burn amount exceeds balance\"",
                                  "value": "ERC1155: burn amount exceeds balance"
                                },
                                "id": 3005,
                                "name": "Literal",
                                "src": "10552:38:5"
                              }
                            ],
                            "id": 3006,
                            "name": "FunctionCall",
                            "src": "10492:108:5"
                          }
                        ],
                        "id": 3007,
                        "name": "Assignment",
                        "src": "10467:133:5"
                      }
                    ],
                    "id": 3008,
                    "name": "ExpressionStatement",
                    "src": "10467:133:5"
                  },
                  {
                    "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_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": 3009,
                            "name": "Identifier",
                            "src": "10616:14:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2973,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 3010,
                            "name": "Identifier",
                            "src": "10631:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2955,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 3011,
                            "name": "Identifier",
                            "src": "10641:7:5"
                          },
                          {
                            "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": 3012,
                                    "name": "ElementaryTypeName",
                                    "src": "10650:7:5"
                                  }
                                ],
                                "id": 3013,
                                "name": "ElementaryTypeNameExpression",
                                "src": "10650:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3014,
                                "name": "Literal",
                                "src": "10658:1:5"
                              }
                            ],
                            "id": 3015,
                            "name": "FunctionCall",
                            "src": "10650:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2957,
                              "type": "uint256",
                              "value": "id"
                            },
                            "id": 3016,
                            "name": "Identifier",
                            "src": "10662:2:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2959,
                              "type": "uint256",
                              "value": "amount"
                            },
                            "id": 3017,
                            "name": "Identifier",
                            "src": "10666:6:5"
                          }
                        ],
                        "id": 3018,
                        "name": "FunctionCall",
                        "src": "10616:57:5"
                      }
                    ],
                    "id": 3019,
                    "name": "EmitStatement",
                    "src": "10611:62:5"
                  }
                ],
                "id": 3020,
                "name": "Block",
                "src": "10219:461:5"
              }
            ],
            "id": 3021,
            "name": "FunctionDefinition",
            "src": "10142:538:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_burnBatch",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n Requirements:\n - `ids` and `amounts` must have the same length."
                },
                "id": 3022,
                "name": "StructuredDocumentation",
                "src": "10686:183:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "account",
                      "scope": 3116,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3023,
                        "name": "ElementaryTypeName",
                        "src": "10894:7:5"
                      }
                    ],
                    "id": 3024,
                    "name": "VariableDeclaration",
                    "src": "10894:15:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "scope": 3116,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3025,
                            "name": "ElementaryTypeName",
                            "src": "10911:7:5"
                          }
                        ],
                        "id": 3026,
                        "name": "ArrayTypeName",
                        "src": "10911:9:5"
                      }
                    ],
                    "id": 3027,
                    "name": "VariableDeclaration",
                    "src": "10911:20:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amounts",
                      "scope": 3116,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3028,
                            "name": "ElementaryTypeName",
                            "src": "10933:7:5"
                          }
                        ],
                        "id": 3029,
                        "name": "ArrayTypeName",
                        "src": "10933:9:5"
                      }
                    ],
                    "id": 3030,
                    "name": "VariableDeclaration",
                    "src": "10933:24:5"
                  }
                ],
                "id": 3031,
                "name": "ParameterList",
                "src": "10893:65:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3032,
                "name": "ParameterList",
                "src": "10976:0:5"
              },
              {
                "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_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a",
                                  "typeString": "literal_string \"ERC1155: burn from the zero address\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 3033,
                            "name": "Identifier",
                            "src": "10986:7:5"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3024,
                                  "type": "address",
                                  "value": "account"
                                },
                                "id": 3034,
                                "name": "Identifier",
                                "src": "10994:7:5"
                              },
                              {
                                "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": 3035,
                                        "name": "ElementaryTypeName",
                                        "src": "11005:7:5"
                                      }
                                    ],
                                    "id": 3036,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "11005:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 3037,
                                    "name": "Literal",
                                    "src": "11013:1:5"
                                  }
                                ],
                                "id": 3038,
                                "name": "FunctionCall",
                                "src": "11005:10:5"
                              }
                            ],
                            "id": 3039,
                            "name": "BinaryOperation",
                            "src": "10994:21:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: burn from the zero address\"",
                              "value": "ERC1155: burn from the zero address"
                            },
                            "id": 3040,
                            "name": "Literal",
                            "src": "11017:37:5"
                          }
                        ],
                        "id": 3041,
                        "name": "FunctionCall",
                        "src": "10986:69:5"
                      }
                    ],
                    "id": 3042,
                    "name": "ExpressionStatement",
                    "src": "10986:69:5"
                  },
                  {
                    "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_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807",
                                  "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\""
                                }
                              ],
                              "overloadedDeclarations": [
                                4294967278,
                                4294967278
                              ],
                              "referencedDeclaration": 4294967278,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 3043,
                            "name": "Identifier",
                            "src": "11065:7:5"
                          },
                          {
                            "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": 3027,
                                      "type": "uint256[] memory",
                                      "value": "ids"
                                    },
                                    "id": 3044,
                                    "name": "Identifier",
                                    "src": "11073:3:5"
                                  }
                                ],
                                "id": 3045,
                                "name": "MemberAccess",
                                "src": "11073:10:5"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3030,
                                      "type": "uint256[] memory",
                                      "value": "amounts"
                                    },
                                    "id": 3046,
                                    "name": "Identifier",
                                    "src": "11087:7:5"
                                  }
                                ],
                                "id": 3047,
                                "name": "MemberAccess",
                                "src": "11087:14:5"
                              }
                            ],
                            "id": 3048,
                            "name": "BinaryOperation",
                            "src": "11073:28:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"ERC1155: ids and amounts length mismatch\"",
                              "value": "ERC1155: ids and amounts length mismatch"
                            },
                            "id": 3049,
                            "name": "Literal",
                            "src": "11103:42:5"
                          }
                        ],
                        "id": 3050,
                        "name": "FunctionCall",
                        "src": "11065:81:5"
                      }
                    ],
                    "id": 3051,
                    "name": "ExpressionStatement",
                    "src": "11065:81:5"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        3053
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "operator",
                          "scope": 3115,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 3052,
                            "name": "ElementaryTypeName",
                            "src": "11157:7:5"
                          }
                        ],
                        "id": 3053,
                        "name": "VariableDeclaration",
                        "src": "11157:16:5"
                      },
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 4312,
                              "type": "function () view returns (address payable)",
                              "value": "_msgSender"
                            },
                            "id": 3054,
                            "name": "Identifier",
                            "src": "11176:10:5"
                          }
                        ],
                        "id": 3055,
                        "name": "FunctionCall",
                        "src": "11176:12:5"
                      }
                    ],
                    "id": 3056,
                    "name": "VariableDeclarationStatement",
                    "src": "11157:31:5"
                  },
                  {
                    "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_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"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3135,
                              "type": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)",
                              "value": "_beforeTokenTransfer"
                            },
                            "id": 3057,
                            "name": "Identifier",
                            "src": "11199:20:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3053,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 3058,
                            "name": "Identifier",
                            "src": "11220:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3024,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 3059,
                            "name": "Identifier",
                            "src": "11230:7:5"
                          },
                          {
                            "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": 3060,
                                    "name": "ElementaryTypeName",
                                    "src": "11239:7:5"
                                  }
                                ],
                                "id": 3061,
                                "name": "ElementaryTypeNameExpression",
                                "src": "11239:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3062,
                                "name": "Literal",
                                "src": "11247:1:5"
                              }
                            ],
                            "id": 3063,
                            "name": "FunctionCall",
                            "src": "11239:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3027,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 3064,
                            "name": "Identifier",
                            "src": "11251:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3030,
                              "type": "uint256[] memory",
                              "value": "amounts"
                            },
                            "id": 3065,
                            "name": "Identifier",
                            "src": "11256:7:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"\"",
                              "value": ""
                            },
                            "id": 3066,
                            "name": "Literal",
                            "src": "11265:2:5"
                          }
                        ],
                        "id": 3067,
                        "name": "FunctionCall",
                        "src": "11199:69:5"
                      }
                    ],
                    "id": 3068,
                    "name": "ExpressionStatement",
                    "src": "11199:69:5"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            3070
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "scope": 3103,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint",
                                  "type": "uint256"
                                },
                                "id": 3069,
                                "name": "ElementaryTypeName",
                                "src": "11284:4:5"
                              }
                            ],
                            "id": 3070,
                            "name": "VariableDeclaration",
                            "src": "11284:6:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3071,
                            "name": "Literal",
                            "src": "11293:1:5"
                          }
                        ],
                        "id": 3072,
                        "name": "VariableDeclarationStatement",
                        "src": "11284:10:5"
                      },
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3070,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 3073,
                            "name": "Identifier",
                            "src": "11296:1:5"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3027,
                                  "type": "uint256[] memory",
                                  "value": "ids"
                                },
                                "id": 3074,
                                "name": "Identifier",
                                "src": "11300:3:5"
                              }
                            ],
                            "id": 3075,
                            "name": "MemberAccess",
                            "src": "11300:10:5"
                          }
                        ],
                        "id": 3076,
                        "name": "BinaryOperation",
                        "src": "11296:14:5"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3070,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 3077,
                                "name": "Identifier",
                                "src": "11312:1:5"
                              }
                            ],
                            "id": 3078,
                            "name": "UnaryOperation",
                            "src": "11312:3:5"
                          }
                        ],
                        "id": 3079,
                        "name": "ExpressionStatement",
                        "src": "11312:3:5"
                      },
                      {
                        "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": 3080,
                                            "name": "Identifier",
                                            "src": "11331:9:5"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3027,
                                                  "type": "uint256[] memory",
                                                  "value": "ids"
                                                },
                                                "id": 3081,
                                                "name": "Identifier",
                                                "src": "11341:3:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3070,
                                                  "type": "uint256",
                                                  "value": "i"
                                                },
                                                "id": 3082,
                                                "name": "Identifier",
                                                "src": "11345:1:5"
                                              }
                                            ],
                                            "id": 3083,
                                            "name": "IndexAccess",
                                            "src": "11341:6:5"
                                          }
                                        ],
                                        "id": 3085,
                                        "name": "IndexAccess",
                                        "src": "11331:17:5"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3024,
                                          "type": "address",
                                          "value": "account"
                                        },
                                        "id": 3084,
                                        "name": "Identifier",
                                        "src": "11349:7:5"
                                      }
                                    ],
                                    "id": 3086,
                                    "name": "IndexAccess",
                                    "src": "11331:26:5"
                                  },
                                  {
                                    "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"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685",
                                              "typeString": "literal_string \"ERC1155: burn amount exceeds balance\""
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "sub",
                                          "referencedDeclaration": 4467,
                                          "type": "function (uint256,uint256,string memory) 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": 3087,
                                                    "name": "Identifier",
                                                    "src": "11360:9:5"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "type": "uint256"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3027,
                                                          "type": "uint256[] memory",
                                                          "value": "ids"
                                                        },
                                                        "id": 3088,
                                                        "name": "Identifier",
                                                        "src": "11370:3:5"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 3070,
                                                          "type": "uint256",
                                                          "value": "i"
                                                        },
                                                        "id": 3089,
                                                        "name": "Identifier",
                                                        "src": "11374:1:5"
                                                      }
                                                    ],
                                                    "id": 3090,
                                                    "name": "IndexAccess",
                                                    "src": "11370:6:5"
                                                  }
                                                ],
                                                "id": 3091,
                                                "name": "IndexAccess",
                                                "src": "11360:17:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3024,
                                                  "type": "address",
                                                  "value": "account"
                                                },
                                                "id": 3092,
                                                "name": "Identifier",
                                                "src": "11378:7:5"
                                              }
                                            ],
                                            "id": 3093,
                                            "name": "IndexAccess",
                                            "src": "11360:26:5"
                                          }
                                        ],
                                        "id": 3094,
                                        "name": "MemberAccess",
                                        "src": "11360:30:5"
                                      },
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3030,
                                              "type": "uint256[] memory",
                                              "value": "amounts"
                                            },
                                            "id": 3095,
                                            "name": "Identifier",
                                            "src": "11408:7:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3070,
                                              "type": "uint256",
                                              "value": "i"
                                            },
                                            "id": 3096,
                                            "name": "Identifier",
                                            "src": "11416:1:5"
                                          }
                                        ],
                                        "id": 3097,
                                        "name": "IndexAccess",
                                        "src": "11408:10:5"
                                      },
                                      {
                                        "attributes": {
                                          "hexvalue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "token": "string",
                                          "type": "literal_string \"ERC1155: burn amount exceeds balance\"",
                                          "value": "ERC1155: burn amount exceeds balance"
                                        },
                                        "id": 3098,
                                        "name": "Literal",
                                        "src": "11436:38:5"
                                      }
                                    ],
                                    "id": 3099,
                                    "name": "FunctionCall",
                                    "src": "11360:128:5"
                                  }
                                ],
                                "id": 3100,
                                "name": "Assignment",
                                "src": "11331:157:5"
                              }
                            ],
                            "id": 3101,
                            "name": "ExpressionStatement",
                            "src": "11331:157:5"
                          }
                        ],
                        "id": 3102,
                        "name": "Block",
                        "src": "11317:182:5"
                      }
                    ],
                    "id": 3103,
                    "name": "ForStatement",
                    "src": "11279:220:5"
                  },
                  {
                    "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_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": 3104,
                            "name": "Identifier",
                            "src": "11514:13:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3053,
                              "type": "address",
                              "value": "operator"
                            },
                            "id": 3105,
                            "name": "Identifier",
                            "src": "11528:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3024,
                              "type": "address",
                              "value": "account"
                            },
                            "id": 3106,
                            "name": "Identifier",
                            "src": "11538:7:5"
                          },
                          {
                            "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": 3107,
                                    "name": "ElementaryTypeName",
                                    "src": "11547:7:5"
                                  }
                                ],
                                "id": 3108,
                                "name": "ElementaryTypeNameExpression",
                                "src": "11547:7:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3109,
                                "name": "Literal",
                                "src": "11555:1:5"
                              }
                            ],
                            "id": 3110,
                            "name": "FunctionCall",
                            "src": "11547:10:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3027,
                              "type": "uint256[] memory",
                              "value": "ids"
                            },
                            "id": 3111,
                            "name": "Identifier",
                            "src": "11559:3:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3030,
                              "type": "uint256[] memory",
                              "value": "amounts"
                            },
                            "id": 3112,
                            "name": "Identifier",
                            "src": "11564:7:5"
                          }
                        ],
                        "id": 3113,
                        "name": "FunctionCall",
                        "src": "11514:58:5"
                      }
                    ],
                    "id": 3114,
                    "name": "EmitStatement",
                    "src": "11509:63:5"
                  }
                ],
                "id": 3115,
                "name": "Block",
                "src": "10976:603:5"
              }
            ],
            "id": 3116,
            "name": "FunctionDefinition",
            "src": "10874:705:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_beforeTokenTransfer",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": true,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `id` and `amount` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be  transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                },
                "id": 3117,
                "name": "StructuredDocumentation",
                "src": "11585:923:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "operator",
                      "scope": 3135,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3118,
                        "name": "ElementaryTypeName",
                        "src": "12552:7:5"
                      }
                    ],
                    "id": 3119,
                    "name": "VariableDeclaration",
                    "src": "12552:16:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "from",
                      "scope": 3135,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3120,
                        "name": "ElementaryTypeName",
                        "src": "12578:7:5"
                      }
                    ],
                    "id": 3121,
                    "name": "VariableDeclaration",
                    "src": "12578:12:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 3135,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3122,
                        "name": "ElementaryTypeName",
                        "src": "12600:7:5"
                      }
                    ],
                    "id": 3123,
                    "name": "VariableDeclaration",
                    "src": "12600:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "scope": 3135,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3124,
                            "name": "ElementaryTypeName",
                            "src": "12620:7:5"
                          }
                        ],
                        "id": 3125,
                        "name": "ArrayTypeName",
                        "src": "12620:9:5"
                      }
                    ],
                    "id": 3126,
                    "name": "VariableDeclaration",
                    "src": "12620:20:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amounts",
                      "scope": 3135,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3127,
                            "name": "ElementaryTypeName",
                            "src": "12650:7:5"
                          }
                        ],
                        "id": 3128,
                        "name": "ArrayTypeName",
                        "src": "12650:9:5"
                      }
                    ],
                    "id": 3129,
                    "name": "VariableDeclaration",
                    "src": "12650:24:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 3135,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3130,
                        "name": "ElementaryTypeName",
                        "src": "12684:5:5"
                      }
                    ],
                    "id": 3131,
                    "name": "VariableDeclaration",
                    "src": "12684:17:5"
                  }
                ],
                "id": 3132,
                "name": "ParameterList",
                "src": "12542:165:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3133,
                "name": "ParameterList",
                "src": "12737:0:5"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 3134,
                "name": "Block",
                "src": "12737:3:5"
              }
            ],
            "id": 3135,
            "name": "FunctionDefinition",
            "src": "12513:227:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_doSafeTransferAcceptanceCheck",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "operator",
                      "scope": 3200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3136,
                        "name": "ElementaryTypeName",
                        "src": "12795:7:5"
                      }
                    ],
                    "id": 3137,
                    "name": "VariableDeclaration",
                    "src": "12795:16:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "from",
                      "scope": 3200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3138,
                        "name": "ElementaryTypeName",
                        "src": "12821:7:5"
                      }
                    ],
                    "id": 3139,
                    "name": "VariableDeclaration",
                    "src": "12821:12:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 3200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3140,
                        "name": "ElementaryTypeName",
                        "src": "12843:7:5"
                      }
                    ],
                    "id": 3141,
                    "name": "VariableDeclaration",
                    "src": "12843:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "id",
                      "scope": 3200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3142,
                        "name": "ElementaryTypeName",
                        "src": "12863:7:5"
                      }
                    ],
                    "id": 3143,
                    "name": "VariableDeclaration",
                    "src": "12863:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amount",
                      "scope": 3200,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3144,
                        "name": "ElementaryTypeName",
                        "src": "12883:7:5"
                      }
                    ],
                    "id": 3145,
                    "name": "VariableDeclaration",
                    "src": "12883:14:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 3200,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3146,
                        "name": "ElementaryTypeName",
                        "src": "12907:5:5"
                      }
                    ],
                    "id": 3147,
                    "name": "VariableDeclaration",
                    "src": "12907:17:5"
                  }
                ],
                "id": 3148,
                "name": "ParameterList",
                "src": "12785:145:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3149,
                "name": "ParameterList",
                "src": "12952:0:5"
              },
              {
                "children": [
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "isContract",
                              "referencedDeclaration": 6597,
                              "type": "function (address) view returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3141,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 3150,
                                "name": "Identifier",
                                "src": "12966:2:5"
                              }
                            ],
                            "id": 3151,
                            "name": "MemberAccess",
                            "src": "12966:13:5"
                          }
                        ],
                        "id": 3152,
                        "name": "FunctionCall",
                        "src": "12966:15:5"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": true,
                                  "type": "bytes4",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "onERC1155Received",
                                      "referencedDeclaration": 4827,
                                      "type": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract IERC1155Receiver",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4846,
                                              "type": "type(contract IERC1155Receiver)",
                                              "value": "IERC1155Receiver"
                                            },
                                            "id": 3153,
                                            "name": "Identifier",
                                            "src": "13001:16:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3141,
                                              "type": "address",
                                              "value": "to"
                                            },
                                            "id": 3154,
                                            "name": "Identifier",
                                            "src": "13018:2:5"
                                          }
                                        ],
                                        "id": 3155,
                                        "name": "FunctionCall",
                                        "src": "13001:20:5"
                                      }
                                    ],
                                    "id": 3156,
                                    "name": "MemberAccess",
                                    "src": "13001:38:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3137,
                                      "type": "address",
                                      "value": "operator"
                                    },
                                    "id": 3157,
                                    "name": "Identifier",
                                    "src": "13040:8:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3139,
                                      "type": "address",
                                      "value": "from"
                                    },
                                    "id": 3158,
                                    "name": "Identifier",
                                    "src": "13050:4:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3143,
                                      "type": "uint256",
                                      "value": "id"
                                    },
                                    "id": 3159,
                                    "name": "Identifier",
                                    "src": "13056:2:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3145,
                                      "type": "uint256",
                                      "value": "amount"
                                    },
                                    "id": 3160,
                                    "name": "Identifier",
                                    "src": "13060:6:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3147,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 3161,
                                    "name": "Identifier",
                                    "src": "13068:4:5"
                                  }
                                ],
                                "id": 3162,
                                "name": "FunctionCall",
                                "src": "13001:72:5"
                              },
                              {
                                "attributes": {
                                  "errorName": ""
                                },
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "response",
                                          "scope": 3180,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "bytes4",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "bytes4",
                                              "type": "bytes4"
                                            },
                                            "id": 3163,
                                            "name": "ElementaryTypeName",
                                            "src": "13083:6:5"
                                          }
                                        ],
                                        "id": 3164,
                                        "name": "VariableDeclaration",
                                        "src": "13083:15:5"
                                      }
                                    ],
                                    "id": 3165,
                                    "name": "ParameterList",
                                    "src": "13082:17:5"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {},
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "!=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3164,
                                                  "type": "bytes4",
                                                  "value": "response"
                                                },
                                                "id": 3166,
                                                "name": "Identifier",
                                                "src": "13122:8:5"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "selector",
                                                  "type": "bytes4"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "onERC1155Received",
                                                      "referencedDeclaration": 4827,
                                                      "type": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "isStructConstructorCall": false,
                                                          "lValueRequested": false,
                                                          "names": [
                                                            null
                                                          ],
                                                          "tryCall": false,
                                                          "type": "contract IERC1155Receiver",
                                                          "type_conversion": true
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_address",
                                                                  "typeString": "address"
                                                                }
                                                              ],
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 4846,
                                                              "type": "type(contract IERC1155Receiver)",
                                                              "value": "IERC1155Receiver"
                                                            },
                                                            "id": 3167,
                                                            "name": "Identifier",
                                                            "src": "13134:16:5"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3141,
                                                              "type": "address",
                                                              "value": "to"
                                                            },
                                                            "id": 3168,
                                                            "name": "Identifier",
                                                            "src": "13151:2:5"
                                                          }
                                                        ],
                                                        "id": 3169,
                                                        "name": "FunctionCall",
                                                        "src": "13134:20:5"
                                                      }
                                                    ],
                                                    "id": 3170,
                                                    "name": "MemberAccess",
                                                    "src": "13134:38:5"
                                                  }
                                                ],
                                                "id": 3171,
                                                "name": "MemberAccess",
                                                "src": "13134:47:5"
                                              }
                                            ],
                                            "id": 3172,
                                            "name": "BinaryOperation",
                                            "src": "13122:59:5"
                                          },
                                          {
                                            "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_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                              "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                            }
                                                          ],
                                                          "overloadedDeclarations": [
                                                            4294967277,
                                                            4294967277
                                                          ],
                                                          "referencedDeclaration": 4294967277,
                                                          "type": "function (string memory) pure",
                                                          "value": "revert"
                                                        },
                                                        "id": 3173,
                                                        "name": "Identifier",
                                                        "src": "13205:6:5"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "hexvalue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73",
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "token": "string",
                                                          "type": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"",
                                                          "value": "ERC1155: ERC1155Receiver rejected tokens"
                                                        },
                                                        "id": 3174,
                                                        "name": "Literal",
                                                        "src": "13212:42:5"
                                                      }
                                                    ],
                                                    "id": 3175,
                                                    "name": "FunctionCall",
                                                    "src": "13205:50:5"
                                                  }
                                                ],
                                                "id": 3176,
                                                "name": "ExpressionStatement",
                                                "src": "13205:50:5"
                                              }
                                            ],
                                            "id": 3177,
                                            "name": "Block",
                                            "src": "13183:91:5"
                                          }
                                        ],
                                        "id": 3178,
                                        "name": "IfStatement",
                                        "src": "13118:156:5"
                                      }
                                    ],
                                    "id": 3179,
                                    "name": "Block",
                                    "src": "13100:188:5"
                                  }
                                ],
                                "id": 3180,
                                "name": "TryCatchClause",
                                "src": "13074:214:5"
                              },
                              {
                                "attributes": {
                                  "errorName": "Error"
                                },
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "reason",
                                          "scope": 3189,
                                          "stateVariable": false,
                                          "storageLocation": "memory",
                                          "type": "string",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "string",
                                              "type": "string"
                                            },
                                            "id": 3181,
                                            "name": "ElementaryTypeName",
                                            "src": "13301:6:5"
                                          }
                                        ],
                                        "id": 3182,
                                        "name": "VariableDeclaration",
                                        "src": "13301:20:5"
                                      }
                                    ],
                                    "id": 3183,
                                    "name": "ParameterList",
                                    "src": "13300:22:5"
                                  },
                                  {
                                    "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_string_memory_ptr",
                                                      "typeString": "string memory"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    4294967277,
                                                    4294967277
                                                  ],
                                                  "referencedDeclaration": 4294967277,
                                                  "type": "function (string memory) pure",
                                                  "value": "revert"
                                                },
                                                "id": 3184,
                                                "name": "Identifier",
                                                "src": "13341:6:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3182,
                                                  "type": "string memory",
                                                  "value": "reason"
                                                },
                                                "id": 3185,
                                                "name": "Identifier",
                                                "src": "13348:6:5"
                                              }
                                            ],
                                            "id": 3186,
                                            "name": "FunctionCall",
                                            "src": "13341:14:5"
                                          }
                                        ],
                                        "id": 3187,
                                        "name": "ExpressionStatement",
                                        "src": "13341:14:5"
                                      }
                                    ],
                                    "id": 3188,
                                    "name": "Block",
                                    "src": "13323:47:5"
                                  }
                                ],
                                "id": 3189,
                                "name": "TryCatchClause",
                                "src": "13289:81:5"
                              },
                              {
                                "attributes": {
                                  "errorName": ""
                                },
                                "children": [
                                  {
                                    "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_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                      "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    4294967277,
                                                    4294967277
                                                  ],
                                                  "referencedDeclaration": 4294967277,
                                                  "type": "function (string memory) pure",
                                                  "value": "revert"
                                                },
                                                "id": 3190,
                                                "name": "Identifier",
                                                "src": "13395:6:5"
                                              },
                                              {
                                                "attributes": {
                                                  "hexvalue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "token": "string",
                                                  "type": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"",
                                                  "value": "ERC1155: transfer to non ERC1155Receiver implementer"
                                                },
                                                "id": 3191,
                                                "name": "Literal",
                                                "src": "13402:54:5"
                                              }
                                            ],
                                            "id": 3192,
                                            "name": "FunctionCall",
                                            "src": "13395:62:5"
                                          }
                                        ],
                                        "id": 3193,
                                        "name": "ExpressionStatement",
                                        "src": "13395:62:5"
                                      }
                                    ],
                                    "id": 3194,
                                    "name": "Block",
                                    "src": "13377:95:5"
                                  }
                                ],
                                "id": 3195,
                                "name": "TryCatchClause",
                                "src": "13371:101:5"
                              }
                            ],
                            "id": 3196,
                            "name": "TryStatement",
                            "src": "12997:475:5"
                          }
                        ],
                        "id": 3197,
                        "name": "Block",
                        "src": "12983:499:5"
                      }
                    ],
                    "id": 3198,
                    "name": "IfStatement",
                    "src": "12962:520:5"
                  }
                ],
                "id": 3199,
                "name": "Block",
                "src": "12952:536:5"
              }
            ],
            "id": 3200,
            "name": "FunctionDefinition",
            "src": "12746:742:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_doSafeBatchTransferAcceptanceCheck",
              "scope": 3296,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "operator",
                      "scope": 3267,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3201,
                        "name": "ElementaryTypeName",
                        "src": "13548:7:5"
                      }
                    ],
                    "id": 3202,
                    "name": "VariableDeclaration",
                    "src": "13548:16:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "from",
                      "scope": 3267,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3203,
                        "name": "ElementaryTypeName",
                        "src": "13574:7:5"
                      }
                    ],
                    "id": 3204,
                    "name": "VariableDeclaration",
                    "src": "13574:12:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "to",
                      "scope": 3267,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3205,
                        "name": "ElementaryTypeName",
                        "src": "13596:7:5"
                      }
                    ],
                    "id": 3206,
                    "name": "VariableDeclaration",
                    "src": "13596:10:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "ids",
                      "scope": 3267,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3207,
                            "name": "ElementaryTypeName",
                            "src": "13616:7:5"
                          }
                        ],
                        "id": 3208,
                        "name": "ArrayTypeName",
                        "src": "13616:9:5"
                      }
                    ],
                    "id": 3209,
                    "name": "VariableDeclaration",
                    "src": "13616:20:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amounts",
                      "scope": 3267,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3210,
                            "name": "ElementaryTypeName",
                            "src": "13646:7:5"
                          }
                        ],
                        "id": 3211,
                        "name": "ArrayTypeName",
                        "src": "13646:9:5"
                      }
                    ],
                    "id": 3212,
                    "name": "VariableDeclaration",
                    "src": "13646:24:5"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 3267,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 3213,
                        "name": "ElementaryTypeName",
                        "src": "13680:5:5"
                      }
                    ],
                    "id": 3214,
                    "name": "VariableDeclaration",
                    "src": "13680:17:5"
                  }
                ],
                "id": 3215,
                "name": "ParameterList",
                "src": "13538:165:5"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3216,
                "name": "ParameterList",
                "src": "13725:0:5"
              },
              {
                "children": [
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "isContract",
                              "referencedDeclaration": 6597,
                              "type": "function (address) view returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3206,
                                  "type": "address",
                                  "value": "to"
                                },
                                "id": 3217,
                                "name": "Identifier",
                                "src": "13739:2:5"
                              }
                            ],
                            "id": 3218,
                            "name": "MemberAccess",
                            "src": "13739:13:5"
                          }
                        ],
                        "id": 3219,
                        "name": "FunctionCall",
                        "src": "13739:15:5"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": true,
                                  "type": "bytes4",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "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"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "onERC1155BatchReceived",
                                      "referencedDeclaration": 4845,
                                      "type": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract IERC1155Receiver",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 4846,
                                              "type": "type(contract IERC1155Receiver)",
                                              "value": "IERC1155Receiver"
                                            },
                                            "id": 3220,
                                            "name": "Identifier",
                                            "src": "13774:16:5"
                                          },
                                          {
                                            "attributes": {
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3206,
                                              "type": "address",
                                              "value": "to"
                                            },
                                            "id": 3221,
                                            "name": "Identifier",
                                            "src": "13791:2:5"
                                          }
                                        ],
                                        "id": 3222,
                                        "name": "FunctionCall",
                                        "src": "13774:20:5"
                                      }
                                    ],
                                    "id": 3223,
                                    "name": "MemberAccess",
                                    "src": "13774:43:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3202,
                                      "type": "address",
                                      "value": "operator"
                                    },
                                    "id": 3224,
                                    "name": "Identifier",
                                    "src": "13818:8:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3204,
                                      "type": "address",
                                      "value": "from"
                                    },
                                    "id": 3225,
                                    "name": "Identifier",
                                    "src": "13828:4:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3209,
                                      "type": "uint256[] memory",
                                      "value": "ids"
                                    },
                                    "id": 3226,
                                    "name": "Identifier",
                                    "src": "13834:3:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3212,
                                      "type": "uint256[] memory",
                                      "value": "amounts"
                                    },
                                    "id": 3227,
                                    "name": "Identifier",
                                    "src": "13839:7:5"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3214,
                                      "type": "bytes memory",
                                      "value": "data"
                                    },
                                    "id": 3228,
                                    "name": "Identifier",
                                    "src": "13848:4:5"
                                  }
                                ],
                                "id": 3229,
                                "name": "FunctionCall",
                                "src": "13774:79:5"
                              },
                              {
                                "attributes": {
                                  "errorName": ""
                                },
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "response",
                                          "scope": 3247,
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "type": "bytes4",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "bytes4",
                                              "type": "bytes4"
                                            },
                                            "id": 3230,
                                            "name": "ElementaryTypeName",
                                            "src": "13863:6:5"
                                          }
                                        ],
                                        "id": 3231,
                                        "name": "VariableDeclaration",
                                        "src": "13863:15:5"
                                      }
                                    ],
                                    "id": 3232,
                                    "name": "ParameterList",
                                    "src": "13862:17:5"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {},
                                        "children": [
                                          {
                                            "attributes": {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              },
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "!=",
                                              "type": "bool"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3231,
                                                  "type": "bytes4",
                                                  "value": "response"
                                                },
                                                "id": 3233,
                                                "name": "Identifier",
                                                "src": "13902:8:5"
                                              },
                                              {
                                                "attributes": {
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "member_name": "selector",
                                                  "type": "bytes4"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "onERC1155BatchReceived",
                                                      "referencedDeclaration": 4845,
                                                      "type": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "isStructConstructorCall": false,
                                                          "lValueRequested": false,
                                                          "names": [
                                                            null
                                                          ],
                                                          "tryCall": false,
                                                          "type": "contract IERC1155Receiver",
                                                          "type_conversion": true
                                                        },
                                                        "children": [
                                                          {
                                                            "attributes": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_address",
                                                                  "typeString": "address"
                                                                }
                                                              ],
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 4846,
                                                              "type": "type(contract IERC1155Receiver)",
                                                              "value": "IERC1155Receiver"
                                                            },
                                                            "id": 3234,
                                                            "name": "Identifier",
                                                            "src": "13914:16:5"
                                                          },
                                                          {
                                                            "attributes": {
                                                              "overloadedDeclarations": [
                                                                null
                                                              ],
                                                              "referencedDeclaration": 3206,
                                                              "type": "address",
                                                              "value": "to"
                                                            },
                                                            "id": 3235,
                                                            "name": "Identifier",
                                                            "src": "13931:2:5"
                                                          }
                                                        ],
                                                        "id": 3236,
                                                        "name": "FunctionCall",
                                                        "src": "13914:20:5"
                                                      }
                                                    ],
                                                    "id": 3237,
                                                    "name": "MemberAccess",
                                                    "src": "13914:43:5"
                                                  }
                                                ],
                                                "id": 3238,
                                                "name": "MemberAccess",
                                                "src": "13914:52:5"
                                              }
                                            ],
                                            "id": 3239,
                                            "name": "BinaryOperation",
                                            "src": "13902:64:5"
                                          },
                                          {
                                            "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_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503",
                                                              "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\""
                                                            }
                                                          ],
                                                          "overloadedDeclarations": [
                                                            4294967277,
                                                            4294967277
                                                          ],
                                                          "referencedDeclaration": 4294967277,
                                                          "type": "function (string memory) pure",
                                                          "value": "revert"
                                                        },
                                                        "id": 3240,
                                                        "name": "Identifier",
                                                        "src": "13990:6:5"
                                                      },
                                                      {
                                                        "attributes": {
                                                          "hexvalue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73",
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "lValueRequested": false,
                                                          "token": "string",
                                                          "type": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"",
                                                          "value": "ERC1155: ERC1155Receiver rejected tokens"
                                                        },
                                                        "id": 3241,
                                                        "name": "Literal",
                                                        "src": "13997:42:5"
                                                      }
                                                    ],
                                                    "id": 3242,
                                                    "name": "FunctionCall",
                                                    "src": "13990:50:5"
                                                  }
                                                ],
                                                "id": 3243,
                                                "name": "ExpressionStatement",
                                                "src": "13990:50:5"
                                              }
                                            ],
                                            "id": 3244,
                                            "name": "Block",
                                            "src": "13968:91:5"
                                          }
                                        ],
                                        "id": 3245,
                                        "name": "IfStatement",
                                        "src": "13898:161:5"
                                      }
                                    ],
                                    "id": 3246,
                                    "name": "Block",
                                    "src": "13880:193:5"
                                  }
                                ],
                                "id": 3247,
                                "name": "TryCatchClause",
                                "src": "13854:219:5"
                              },
                              {
                                "attributes": {
                                  "errorName": "Error"
                                },
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "reason",
                                          "scope": 3256,
                                          "stateVariable": false,
                                          "storageLocation": "memory",
                                          "type": "string",
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "string",
                                              "type": "string"
                                            },
                                            "id": 3248,
                                            "name": "ElementaryTypeName",
                                            "src": "14086:6:5"
                                          }
                                        ],
                                        "id": 3249,
                                        "name": "VariableDeclaration",
                                        "src": "14086:20:5"
                                      }
                                    ],
                                    "id": 3250,
                                    "name": "ParameterList",
                                    "src": "14085:22:5"
                                  },
                                  {
                                    "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_string_memory_ptr",
                                                      "typeString": "string memory"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    4294967277,
                                                    4294967277
                                                  ],
                                                  "referencedDeclaration": 4294967277,
                                                  "type": "function (string memory) pure",
                                                  "value": "revert"
                                                },
                                                "id": 3251,
                                                "name": "Identifier",
                                                "src": "14126:6:5"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3249,
                                                  "type": "string memory",
                                                  "value": "reason"
                                                },
                                                "id": 3252,
                                                "name": "Identifier",
                                                "src": "14133:6:5"
                                              }
                                            ],
                                            "id": 3253,
                                            "name": "FunctionCall",
                                            "src": "14126:14:5"
                                          }
                                        ],
                                        "id": 3254,
                                        "name": "ExpressionStatement",
                                        "src": "14126:14:5"
                                      }
                                    ],
                                    "id": 3255,
                                    "name": "Block",
                                    "src": "14108:47:5"
                                  }
                                ],
                                "id": 3256,
                                "name": "TryCatchClause",
                                "src": "14074:81:5"
                              },
                              {
                                "attributes": {
                                  "errorName": ""
                                },
                                "children": [
                                  {
                                    "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_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed",
                                                      "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\""
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    4294967277,
                                                    4294967277
                                                  ],
                                                  "referencedDeclaration": 4294967277,
                                                  "type": "function (string memory) pure",
                                                  "value": "revert"
                                                },
                                                "id": 3257,
                                                "name": "Identifier",
                                                "src": "14180:6:5"
                                              },
                                              {
                                                "attributes": {
                                                  "hexvalue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572",
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "token": "string",
                                                  "type": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"",
                                                  "value": "ERC1155: transfer to non ERC1155Receiver implementer"
                                                },
                                                "id": 3258,
                                                "name": "Literal",
                                                "src": "14187:54:5"
                                              }
                                            ],
                                            "id": 3259,
                                            "name": "FunctionCall",
                                            "src": "14180:62:5"
                                          }
                                        ],
                                        "id": 3260,
                                        "name": "ExpressionStatement",
                                        "src": "14180:62:5"
                                      }
                                    ],
                                    "id": 3261,
                                    "name": "Block",
                                    "src": "14162:95:5"
                                  }
                                ],
                                "id": 3262,
                                "name": "TryCatchClause",
                                "src": "14156:101:5"
                              }
                            ],
                            "id": 3263,
                            "name": "TryStatement",
                            "src": "13770:487:5"
                          }
                        ],
                        "id": 3264,
                        "name": "Block",
                        "src": "13756:511:5"
                      }
                    ],
                    "id": 3265,
                    "name": "IfStatement",
                    "src": "13735:532:5"
                  }
                ],
                "id": 3266,
                "name": "Block",
                "src": "13725:548:5"
              }
            ],
            "id": 3267,
            "name": "FunctionDefinition",
            "src": "13494:779:5"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_asSingletonArray",
              "scope": 3296,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "element",
                      "scope": 3295,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3268,
                        "name": "ElementaryTypeName",
                        "src": "14306:7:5"
                      }
                    ],
                    "id": 3269,
                    "name": "VariableDeclaration",
                    "src": "14306:15:5"
                  }
                ],
                "id": 3270,
                "name": "ParameterList",
                "src": "14305:17:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3295,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "uint256[]",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3271,
                            "name": "ElementaryTypeName",
                            "src": "14345:7:5"
                          }
                        ],
                        "id": 3272,
                        "name": "ArrayTypeName",
                        "src": "14345:9:5"
                      }
                    ],
                    "id": 3273,
                    "name": "VariableDeclaration",
                    "src": "14345:16:5"
                  }
                ],
                "id": 3274,
                "name": "ParameterList",
                "src": "14344:18:5"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3279
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "array",
                          "scope": 3294,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "uint256[]",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "type": "uint256[]"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 3277,
                                "name": "ElementaryTypeName",
                                "src": "14373:7:5"
                              }
                            ],
                            "id": 3278,
                            "name": "ArrayTypeName",
                            "src": "14373:9:5"
                          }
                        ],
                        "id": 3279,
                        "name": "VariableDeclaration",
                        "src": "14373:22:5"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256[] memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "type": "uint256[]"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256",
                                      "type": "uint256"
                                    },
                                    "id": 3280,
                                    "name": "ElementaryTypeName",
                                    "src": "14402:7:5"
                                  }
                                ],
                                "id": 3281,
                                "name": "ArrayTypeName",
                                "src": "14402:9:5"
                              }
                            ],
                            "id": 3282,
                            "name": "NewExpression",
                            "src": "14398:13:5"
                          },
                          {
                            "attributes": {
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 3283,
                            "name": "Literal",
                            "src": "14412:1:5"
                          }
                        ],
                        "id": 3284,
                        "name": "FunctionCall",
                        "src": "14398:16:5"
                      }
                    ],
                    "id": 3285,
                    "name": "VariableDeclarationStatement",
                    "src": "14373:41:5"
                  },
                  {
                    "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": 3279,
                                  "type": "uint256[] memory",
                                  "value": "array"
                                },
                                "id": 3286,
                                "name": "Identifier",
                                "src": "14424:5:5"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 3287,
                                "name": "Literal",
                                "src": "14430:1:5"
                              }
                            ],
                            "id": 3288,
                            "name": "IndexAccess",
                            "src": "14424:8:5"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3269,
                              "type": "uint256",
                              "value": "element"
                            },
                            "id": 3289,
                            "name": "Identifier",
                            "src": "14435:7:5"
                          }
                        ],
                        "id": 3290,
                        "name": "Assignment",
                        "src": "14424:18:5"
                      }
                    ],
                    "id": 3291,
                    "name": "ExpressionStatement",
                    "src": "14424:18:5"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3274
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3279,
                          "type": "uint256[] memory",
                          "value": "array"
                        },
                        "id": 3292,
                        "name": "Identifier",
                        "src": "14460:5:5"
                      }
                    ],
                    "id": 3293,
                    "name": "Return",
                    "src": "14453:12:5"
                  }
                ],
                "id": 3294,
                "name": "Block",
                "src": "14363:109:5"
              }
            ],
            "id": 3295,
            "name": "FunctionDefinition",
            "src": "14279:193:5"
          }
        ],
        "id": 3296,
        "name": "ContractDefinition",
        "src": "700:13774:5"
      }
    ],
    "id": 3297,
    "name": "SourceUnit",
    "src": "33:14442:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.6+commit.7338295f.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2021-06-03T23:56:22.275Z",
  "devdoc": {
    "details": "Implementation of the basic standard multi-token. See https://eips.ethereum.org/EIPS/eip-1155 Originally based on code by Enjin: https://github.com/enjin/erc-1155 _Available since v3.1._",
    "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": {
        "details": "See {_setURI}."
      },
      "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."
      },
      "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."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}