{"contractName":"SecuredTokenTransfer","abi":[],"bytecode":"0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158204287565d45234cf63d0bab50cd8b350d530560bd689520bd6576f4866c30711a64736f6c634300050e0032","deployedBytecode":"0x6080604052600080fdfea265627a7a723158204287565d45234cf63d0bab50cd8b350d530560bd689520bd6576f4866c30711a64736f6c634300050e0032","sourceMap":"141:1106:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;141:1106:10;;;;;;;","deployedSourceMap":"141:1106:10:-;;;;;","source":"pragma solidity >=0.5.0 <0.7.0;\n\n\n/// @title SecuredTokenTransfer - Secure token transfer\n/// @author Richard Meissner - <richard@gnosis.pm>\ncontract SecuredTokenTransfer {\n\n    /// @dev Transfers a token and returns if it was a success\n    /// @param token Token that should be transferred\n    /// @param receiver Receiver to whom the token should be transferred\n    /// @param amount The amount of tokens that should be transferred\n    function transferToken (\n        address token,\n        address receiver,\n        uint256 amount\n    )\n        internal\n        returns (bool transferred)\n    {\n        bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", receiver, amount);\n        // solium-disable-next-line security/no-inline-assembly\n        assembly {\n            let success := call(sub(gas, 10000), token, 0, add(data, 0x20), mload(data), 0, 0)\n            let ptr := mload(0x40)\n            mstore(0x40, add(ptr, returndatasize()))\n            returndatacopy(ptr, 0, returndatasize())\n            switch returndatasize()\n            case 0 { transferred := success }\n            case 0x20 { transferred := iszero(or(iszero(success), iszero(mload(ptr)))) }\n            default { transferred := 0 }\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.739Z"}