{"contractName":"ERC1155Token","abi":[{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50610b96806100206000396000f3fe608060405234801561001057600080fd5b50600436106100405760003560e01c8062fdd58e14610045578063731133e9146100a7578063f242432a14610154575b600080fd5b6100916004803603604081101561005b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610221565b6040518082815260200191505060405180910390f35b610152600480360360808110156100bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561010e57600080fd5b82018360208201111561012057600080fd5b8035906020019184600183028401116401000000008311171561014257600080fd5b9091929391929390505050610300565b005b61021f600480360360a081101561016a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b9091929391929390505050610495565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180610a85602b913960400191505060405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610386576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610b106021913960400191505060405180910390fd5b6103e860008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846107fb90919063ffffffff16565b60008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061048e33600087878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061081a565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561051b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610ab06028913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806105e2575060011515600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b610637576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610ad86038913960400191505060405180910390fd5b6106998360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a5190919063ffffffff16565b60008086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061074e60008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846107fb90919063ffffffff16565b60008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107f3338787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061081a565b505050505050565b60008082840190508381101561081057600080fd5b8091505092915050565b61082384610a71565b15610a49578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e61905060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6188888787876040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561094857808201518184015260208101905061092d565b50505050905090810190601f1680156109755780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561099857600080fd5b505af11580156109ac573d6000803e3d6000fd5b505050506040513d60208110156109c257600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180610b316031913960400191505060405180910390fd5b5b505050505050565b600082821115610a6057600080fd5b600082840390508091505092915050565b600080823b90506000811191505091905056fe455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a207461726765742061646472657373206d757374206265206e6f6e2d7a65726f455243313135353a206e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e455243313135353a206d696e7420746f20746865207a65726f2061646472657373455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d206f6e455243313135355265636569766564a265627a7a7231582072994fd6d06ecf962beb6a1f11fbe2b416f574a7e0b35c57968209c77cdc92c864736f6c634300050e0032","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100405760003560e01c8062fdd58e14610045578063731133e9146100a7578063f242432a14610154575b600080fd5b6100916004803603604081101561005b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610221565b6040518082815260200191505060405180910390f35b610152600480360360808110156100bd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561010e57600080fd5b82018360208201111561012057600080fd5b8035906020019184600183028401116401000000008311171561014257600080fd5b9091929391929390505050610300565b005b61021f600480360360a081101561016a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001906401000000008111156101db57600080fd5b8201836020820111156101ed57600080fd5b8035906020019184600183028401116401000000008311171561020f57600080fd5b9091929391929390505050610495565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156102a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180610a85602b913960400191505060405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610386576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180610b106021913960400191505060405180910390fd5b6103e860008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846107fb90919063ffffffff16565b60008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061048e33600087878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061081a565b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561051b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180610ab06028913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614806105e2575060011515600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b610637576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180610ad86038913960400191505060405180910390fd5b6106998360008087815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a5190919063ffffffff16565b60008086815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061074e60008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846107fb90919063ffffffff16565b60008086815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506107f3338787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061081a565b505050505050565b60008082840190508381101561081057600080fd5b8091505092915050565b61082384610a71565b15610a49578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e61905060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663f23a6e6188888787876040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561094857808201518184015260208101905061092d565b50505050905090810190601f1680156109755780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561099857600080fd5b505af11580156109ac573d6000803e3d6000fd5b505050506040513d60208110156109c257600080fd5b81019080805190602001909291905050507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614610a48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180610b316031913960400191505060405180910390fd5b5b505050505050565b600082821115610a6057600080fd5b600082840390508091505092915050565b600080823b90506000811191505091905056fe455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a207461726765742061646472657373206d757374206265206e6f6e2d7a65726f455243313135353a206e656564206f70657261746f7220617070726f76616c20666f7220337264207061727479207472616e73666572732e455243313135353a206d696e7420746f20746865207a65726f2061646472657373455243313135353a20676f7420756e6b6e6f776e2076616c75652066726f6d206f6e455243313135355265636569766564a265627a7a7231582072994fd6d06ecf962beb6a1f11fbe2b416f574a7e0b35c57968209c77cdc92c864736f6c634300050e0032","sourceMap":"118:3552:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;118:3552:22;;;;;;;","deployedSourceMap":"118:3552:22:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;118:3552:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;671:205;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;671:205:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2405:307;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2405:307:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;2405:307:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2405:307:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2405:307:22;;;;;;;;;;;;:::i;:::-;;1430:633;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1430:633:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1430:633:22;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1430:633:22;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1430:633:22;;;;;;;;;;;;:::i;:::-;;671:205;738:7;782:1;765:19;;:5;:19;;;;757:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;849:9;:13;859:2;849:13;;;;;;;;;;;:20;863:5;849:20;;;;;;;;;;;;;;;;842:27;;671:205;;;;:::o;2405:307::-;2520:1;2506:16;;:2;:16;;;;2498:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2591:28;2601:9;:13;2611:2;2601:13;;;;;;;;;;;:17;2615:2;2601:17;;;;;;;;;;;;;;;;2591:5;:9;;:28;;;;:::i;:::-;2571:9;:13;2581:2;2571:13;;;;;;;;;;;:17;2585:2;2571:17;;;;;;;;;;;;;;;:48;;;;2630:75;2661:10;2681:1;2685:2;2689;2693:5;2700:4;;2630:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2630:75:22;;;;;;:30;:75::i;:::-;2405:307;;;;;:::o;1430:633::-;1629:1;1615:16;;:2;:16;;;;1607:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1715:10;1707:18;;:4;:18;;;:66;;;;1769:4;1729:44;;:18;:24;1748:4;1729:24;;;;;;;;;;;;;;;:36;1754:10;1729:36;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;1707:66;1686:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1888:30;1912:5;1888:9;:13;1898:2;1888:13;;;;;;;;;;;:19;1902:4;1888:19;;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;1866:9;:13;1876:2;1866:13;;;;;;;;;;;:19;1880:4;1866:19;;;;;;;;;;;;;;;:52;;;;1948:28;1958:9;:13;1968:2;1958:13;;;;;;;;;;;:17;1972:2;1958:17;;;;;;;;;;;;;;;;1948:5;:9;;:28;;;;:::i;:::-;1928:9;:13;1938:2;1928:13;;;;;;;;;;;:17;1942:2;1928:17;;;;;;;;;;;;;;;:48;;;;1987:69;2018:10;2030:4;2036:2;2040;2044:5;2051:4;;1987:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1987:69:22;;;;;;:30;:69::i;:::-;1430:633;;;;;;:::o;1335:131:13:-;1393:7;1408:9;1424:1;1420;:5;1408:17;;1444:1;1439;:6;;1431:15;;;;;;1460:1;1453:8;;;1335:131;;;;:::o;3145:523:22:-;3363:14;3374:2;3363:10;:14::i;:::-;3360:302;;;3538:2;3517:42;;;:51;;;;3418:150;;;3439:2;3418:42;;;3461:8;3471:4;3477:2;3481:5;3488:4;3418:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3418:75:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3418:75:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3418:75:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3418:75:22;;;;;;;;;;;;;;;;:150;;;;3393:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3360:302;3145:523;;;;;;:::o;1141:131:13:-;1199:7;1227:1;1222;:6;;1214:15;;;;;;1235:9;1251:1;1247;:5;1235:17;;1266:1;1259:8;;;1141:131;;;;:::o;2718:421:22:-;2778:4;2981:12;3098:7;3086:20;3078:28;;3131:1;3124:4;:8;3117:15;;;2718:421;;;:::o","source":"pragma solidity >=0.5.0 <0.7.0;\n\nimport \"../interfaces/ERC1155TokenReceiver.sol\";\nimport \"../external/SafeMath.sol\";\n\ncontract ERC1155Token {\n\n    using SafeMath for uint256;\n\n    // Mapping from token ID to owner balances\n    mapping (uint256 => mapping(address => uint256)) private _balances;\n\n    // Mapping from owner to operator approvals\n    mapping (address => mapping(address => bool)) private _operatorApprovals;\n\n    /**\n        @dev Get the specified address' balance for token with specified ID.\n        @param owner The address of the token holder\n        @param id ID of the token\n        @return The owner's balance of the token type requested\n     */\n    function balanceOf(address owner, uint256 id) public view returns (uint256) {\n        require(owner != address(0), \"ERC1155: balance query for the zero address\");\n        return _balances[id][owner];\n    }\n\n    /**\n        @dev Transfers `value` amount of an `id` from the `from` address to the `to` address specified.\n        Caller must be approved to manage the tokens being transferred out of the `from` account.\n        If `to` is a smart contract, will call `onERC1155Received` on `to` and act appropriately.\n        @param from Source address\n        @param to Target address\n        @param id ID of the token type\n        @param value Transfer amount\n        @param data Data forwarded to `onERC1155Received` if `to` is a contract receiver\n    */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes calldata data\n    )\n        external\n    {\n        require(to != address(0), \"ERC1155: target address must be non-zero\");\n        require(\n            from == msg.sender || _operatorApprovals[from][msg.sender] == true,\n            \"ERC1155: need operator approval for 3rd party transfers.\"\n        );\n\n        _balances[id][from] = _balances[id][from].sub(value);\n        _balances[id][to] = value.add(_balances[id][to]);\n\n        _doSafeTransferAcceptanceCheck(msg.sender, from, to, id, value, data);\n    }\n\n    /**\n     * @dev Test function to mint an amount of a token with the given ID\n     * @param to The address that will own the minted token\n     * @param id ID of the token to be minted\n     * @param value Amount of the token to be minted\n     * @param data Data forwarded to `onERC1155Received` if `to` is a contract receiver\n     */\n    function mint(address to, uint256 id, uint256 value, bytes calldata data) external {\n        require(to != address(0), \"ERC1155: mint to the zero address\");\n\n        _balances[id][to] = value.add(_balances[id][to]);\n\n        _doSafeTransferAcceptanceCheck(msg.sender, address(0), to, id, value, data);\n    }\n\n    function isContract(address account) internal view returns (bool) {\n        // This method relies in extcodesize, which returns 0 for contracts in\n        // construction, since the code is only stored at the end of the\n        // constructor execution.\n\n        uint256 size;\n        // solium-disable-next-line security/no-inline-assembly\n        assembly { size := extcodesize(account) }\n        return size > 0;\n    }\n\n    function _doSafeTransferAcceptanceCheck(\n        address operator,\n        address from,\n        address to,\n        uint256 id,\n        uint256 value,\n        bytes memory data\n    )\n        internal\n    {\n        if(isContract(to)) {\n            require(\n                ERC1155TokenReceiver(to).onERC1155Received(operator, from, id, value, data) ==\n                    ERC1155TokenReceiver(to).onERC1155Received.selector,\n                \"ERC1155: got unknown value from onERC1155Received\"\n            );\n        }\n    }\n}","compiler":{"name":"solc","version":"0.5.14+commit.01f1aaa4.Emscripten.clang"},"networks":{},"schemaVersion":"2.0.3","updatedAt":"2022-11-11T08:20:54.744Z"}