@etherisc/gif-contracts
Version:
This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.
1,316 lines (1,315 loc) • 143 kB
JSON
{
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "callSuccess",
"type": "bool"
},
{
"indexed": false,
"internalType": "uint256",
"name": "returnDataLength",
"type": "uint256"
},
{
"indexed": false,
"internalType": "bytes",
"name": "returnData",
"type": "bytes"
}
],
"name": "LogTransferHelperCallFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bool",
"name": "tokenIsContract",
"type": "bool"
},
{
"indexed": false,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "LogTransferHelperInputValidation1Failed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
}
],
"name": "LogTransferHelperInputValidation2Failed",
"type": "event"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "unifiedTransferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"allSourcePaths": {
"100": "contracts/test/TestTransferFrom.sol",
"13": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC20/IERC20.sol",
"90": "contracts/shared/TransferHelper.sol"
},
"ast": {
"absolutePath": "contracts/test/TestTransferFrom.sol",
"exportedSymbols": {
"IERC20": [
18510
],
"TestTransferFrom": [
17033
],
"TransferHelper": [
15170
]
},
"id": 17034,
"license": "Apache-2.0",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 16985,
"literals": [
"solidity",
"0.8",
".2"
],
"nodeType": "PragmaDirective",
"src": "39:22:100"
},
{
"absolutePath": "contracts/shared/TransferHelper.sol",
"file": "../shared/TransferHelper.sol",
"id": 16986,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 17034,
"sourceUnit": 15171,
"src": "63:38:100",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"id": 16987,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 17034,
"sourceUnit": 18511,
"src": "103:56:100",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 17033,
"linearizedBaseContracts": [
17033
],
"name": "TestTransferFrom",
"nameLocation": "170:16:100",
"nodeType": "ContractDefinition",
"nodes": [
{
"anonymous": false,
"id": 16995,
"name": "LogTransferHelperInputValidation1Failed",
"nameLocation": "200:39:100",
"nodeType": "EventDefinition",
"parameters": {
"id": 16994,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 16989,
"indexed": false,
"mutability": "mutable",
"name": "tokenIsContract",
"nameLocation": "245:15:100",
"nodeType": "VariableDeclaration",
"scope": 16995,
"src": "240:20:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 16988,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "240:4:100",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 16991,
"indexed": false,
"mutability": "mutable",
"name": "from",
"nameLocation": "270:4:100",
"nodeType": "VariableDeclaration",
"scope": 16995,
"src": "262:12:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 16990,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "262:7:100",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 16993,
"indexed": false,
"mutability": "mutable",
"name": "to",
"nameLocation": "284:2:100",
"nodeType": "VariableDeclaration",
"scope": 16995,
"src": "276:10:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 16992,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "276:7:100",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "239:48:100"
},
"src": "194:94:100"
},
{
"anonymous": false,
"id": 17001,
"name": "LogTransferHelperInputValidation2Failed",
"nameLocation": "299:39:100",
"nodeType": "EventDefinition",
"parameters": {
"id": 17000,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 16997,
"indexed": false,
"mutability": "mutable",
"name": "balance",
"nameLocation": "347:7:100",
"nodeType": "VariableDeclaration",
"scope": 17001,
"src": "339:15:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 16996,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "339:7:100",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 16999,
"indexed": false,
"mutability": "mutable",
"name": "allowance",
"nameLocation": "364:9:100",
"nodeType": "VariableDeclaration",
"scope": 17001,
"src": "356:17:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 16998,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "356:7:100",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "338:36:100"
},
"src": "293:82:100"
},
{
"anonymous": false,
"id": 17009,
"name": "LogTransferHelperCallFailed",
"nameLocation": "386:27:100",
"nodeType": "EventDefinition",
"parameters": {
"id": 17008,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 17003,
"indexed": false,
"mutability": "mutable",
"name": "callSuccess",
"nameLocation": "419:11:100",
"nodeType": "VariableDeclaration",
"scope": 17009,
"src": "414:16:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 17002,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "414:4:100",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 17005,
"indexed": false,
"mutability": "mutable",
"name": "returnDataLength",
"nameLocation": "440:16:100",
"nodeType": "VariableDeclaration",
"scope": 17009,
"src": "432:24:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 17004,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "432:7:100",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 17007,
"indexed": false,
"mutability": "mutable",
"name": "returnData",
"nameLocation": "464:10:100",
"nodeType": "VariableDeclaration",
"scope": 17009,
"src": "458:16:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 17006,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "458:5:100",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "413:62:100"
},
"src": "380:96:100"
},
{
"body": {
"id": 17031,
"nodeType": "Block",
"src": "653:83:100",
"statements": [
{
"expression": {
"arguments": [
{
"id": 17025,
"name": "token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17012,
"src": "705:5:100",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$18510",
"typeString": "contract IERC20"
}
},
{
"id": 17026,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17014,
"src": "712:4:100",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 17027,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17016,
"src": "718:2:100",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 17028,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 17018,
"src": "722:6:100",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IERC20_$18510",
"typeString": "contract IERC20"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 17023,
"name": "TransferHelper",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 15170,
"src": "670:14:100",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_TransferHelper_$15170_$",
"typeString": "type(library TransferHelper)"
}
},
"id": 17024,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "unifiedTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 15169,
"src": "670:34:100",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$18510_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (contract IERC20,address,address,uint256) returns (bool)"
}
},
"id": 17029,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "670:59:100",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 17022,
"id": 17030,
"nodeType": "Return",
"src": "663:66:100"
}
]
},
"functionSelector": "86aa75d7",
"id": 17032,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "unifiedTransferFrom",
"nameLocation": "491:19:100",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 17019,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 17012,
"mutability": "mutable",
"name": "token",
"nameLocation": "527:5:100",
"nodeType": "VariableDeclaration",
"scope": 17032,
"src": "520:12:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$18510",
"typeString": "contract IERC20"
},
"typeName": {
"id": 17011,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 17010,
"name": "IERC20",
"nodeType": "IdentifierPath",
"referencedDeclaration": 18510,
"src": "520:6:100"
},
"referencedDeclaration": 18510,
"src": "520:6:100",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$18510",
"typeString": "contract IERC20"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 17014,
"mutability": "mutable",
"name": "from",
"nameLocation": "551:4:100",
"nodeType": "VariableDeclaration",
"scope": 17032,
"src": "543:12:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 17013,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "543:7:100",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 17016,
"mutability": "mutable",
"name": "to",
"nameLocation": "574:2:100",
"nodeType": "VariableDeclaration",
"scope": 17032,
"src": "566:10:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 17015,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "566:7:100",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 17018,
"mutability": "mutable",
"name": "amount",
"nameLocation": "595:6:100",
"nodeType": "VariableDeclaration",
"scope": 17032,
"src": "587:14:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 17017,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "587:7:100",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "510:97:100"
},
"returnParameters": {
"id": 17022,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 17021,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 17032,
"src": "643:4:100",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 17020,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "643:4:100",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"visibility": "internal"
}
],
"src": "642:6:100"
},
"scope": 17033,
"src": "482:254:100",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 17034,
"src": "161:578:100"
}
],
"src": "39:701:100"
},
"bytecode": "608060405234801561001057600080fd5b506104f1806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806386aa75d714610030575b600080fd5b61004361003e3660046103ac565b610057565b604051901515815260200160405180910390f35b600061006585858585610070565b90505b949350505050565b6000846001600160a01b038082163b1515908616158061009757506001600160a01b038516155b806100a0575080155b156100fb576040805182151581526001600160a01b03888116602083015287168183015290517fe2a67c968620b6e8891e10a48c5d0c958ec8dc14d420ff7a2a1b16e7c5ede2b79181900360600190a1600092505050610068565b6040516370a0823160e01b81526001600160a01b038781166004830152600091908916906370a082319060240160206040518083038186803b15801561014057600080fd5b505afa158015610154573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017891906103fc565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192506000918a169063dd62ed3e9060440160206040518083038186803b1580156101c557600080fd5b505afa1580156101d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101fd91906103fc565b90508582108061020c57508581105b156102575760408051838152602081018390527f80f73cf7014d047c01587fb6c83a8052d5088f7dc1aa8c47e37544397b9d643a910160405180910390a16000945050505050610068565b604080516001600160a01b038a81166024830152898116604483015260648083018a905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908d16916102bb9190610414565b6000604051808303816000865af19150503d80600081146102f8576040519150601f19603f3d011682016040523d82523d6000602084013e6102fd565b606091505b50915091508180156103335750805115806103335750805160201480156103335750808060200190518101906103339190610385565b965086610377577f16b21b374049dcebf0872579e85d4e9d5902788178b61bd82892c4b70584814b8282518360405161036e93929190610430565b60405180910390a15b505050505050949350505050565b600060208284031215610396578081fd5b815180151581146103a5578182fd5b9392505050565b600080600080608085870312156103c1578283fd5b84356103cc816104a3565b935060208501356103dc816104a3565b925060408501356103ec816104a3565b9396929550929360600135925050565b60006020828403121561040d578081fd5b5051919050565b60008251610426818460208701610473565b9190910192915050565b6000841515825283602083015260606040830152825180606084015261045d816080850160208701610473565b601f01601f191691909101608001949350505050565b60005b8381101561048e578181015183820152602001610476565b8381111561049d576000848401525b50505050565b6001600160a01b03811681146104b857600080fd5b5056fea26469706673582212207ff730b78a77d890768c2d6d8a0d9ef6b4cc0b1603c112a2106293f7610d1d2164736f6c63430008020033",
"bytecodeSha1": "4e1a0ef5fc93ba146b0211e5f95b3dbbe7f0787a",
"compiler": {
"evm_version": "istanbul",
"optimizer": {
"enabled": true,
"runs": 200
},
"version": "0.8.2+commit.661d1103"
},
"contractName": "TestTransferFrom",
"coverageMap": {
"branches": {
"100": {},
"13": {},
"90": {
"TransferHelper.unifiedTransferFrom": {
"7": [
1245,
1263,
true
],
"8": [
1267,
1284,
true
],
"9": [
1289,
1304,
false
],
"10": [
1600,
1615,
true
],
"11": [
1619,
1636,
false
],
"12": [
2231,
2238,
false
]
}
}
},
"statements": {
"100": {
"TestTransferFrom.unifiedTransferFrom": {
"0": [
663,
729
]
}
},
"13": {},
"90": {
"TransferHelper.unifiedTransferFrom": {
"1": [
1320,
1391
],
"2": [
1405,
1417
],
"3": [
1652,
1716
],
"4": [
1730,
1742
],
"5": [
2087,
2215
],
"6": [
2254,
2318
]
}
}
}
},
"dependencies": [
"OpenZeppelin/openzeppelin-contracts@4.7.3/IERC20",
"TransferHelper"
],
"deployedBytecode": "608060405234801561001057600080fd5b506004361061002b5760003560e01c806386aa75d714610030575b600080fd5b61004361003e3660046103ac565b610057565b604051901515815260200160405180910390f35b600061006585858585610070565b90505b949350505050565b6000846001600160a01b038082163b1515908616158061009757506001600160a01b038516155b806100a0575080155b156100fb576040805182151581526001600160a01b03888116602083015287168183015290517fe2a67c968620b6e8891e10a48c5d0c958ec8dc14d420ff7a2a1b16e7c5ede2b79181900360600190a1600092505050610068565b6040516370a0823160e01b81526001600160a01b038781166004830152600091908916906370a082319060240160206040518083038186803b15801561014057600080fd5b505afa158015610154573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017891906103fc565b604051636eb1769f60e11b81526001600160a01b0389811660048301523060248301529192506000918a169063dd62ed3e9060440160206040518083038186803b1580156101c557600080fd5b505afa1580156101d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101fd91906103fc565b90508582108061020c57508581105b156102575760408051838152602081018390527f80f73cf7014d047c01587fb6c83a8052d5088f7dc1aa8c47e37544397b9d643a910160405180910390a16000945050505050610068565b604080516001600160a01b038a81166024830152898116604483015260648083018a905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908d16916102bb9190610414565b6000604051808303816000865af19150503d80600081146102f8576040519150601f19603f3d011682016040523d82523d6000602084013e6102fd565b606091505b50915091508180156103335750805115806103335750805160201480156103335750808060200190518101906103339190610385565b965086610377577f16b21b374049dcebf0872579e85d4e9d5902788178b61bd82892c4b70584814b8282518360405161036e93929190610430565b60405180910390a15b505050505050949350505050565b600060208284031215610396578081fd5b815180151581146103a5578182fd5b9392505050565b600080600080608085870312156103c1578283fd5b84356103cc816104a3565b935060208501356103dc816104a3565b925060408501356103ec816104a3565b9396929550929360600135925050565b60006020828403121561040d578081fd5b5051919050565b60008251610426818460208701610473565b9190910192915050565b6000841515825283602083015260606040830152825180606084015261045d816080850160208701610473565b601f01601f191691909101608001949350505050565b60005b8381101561048e578181015183820152602001610476565b8381111561049d576000848401525b50505050565b6001600160a01b03811681146104b857600080fd5b5056fea26469706673582212207ff730b78a77d890768c2d6d8a0d9ef6b4cc0b1603c112a2106293f7610d1d2164736f6c63430008020033",
"deployedSourceMap": "161:578:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;482:254;;;;;;:::i;:::-;;:::i;:::-;;;2485:14:103;;2478:22;2460:41;;2448:2;2433:18;482:254:100;;;;;;;;643:4;670:59;705:5;712:4;718:2;722:6;670:34;:59::i;:::-;663:66;;482:254;;;;;;;:::o;913:1422:90:-;1068:12;1162:5;-1:-1:-1;;;;;1202:24:90;;;;:28;;;1245:18;;;;:39;;-1:-1:-1;;;;;;1267:17:90;;;1245:39;:59;;;;1289:15;1288:16;1245:59;1241:187;;;1325:66;;;2733:14:103;;2726:22;2708:41;;-1:-1:-1;;;;;2823:15:103;;;2818:2;2803:18;;2796:43;2875:15;;2855:18;;;2848:43;1325:66:90;;;;;;;2696:2:103;1325:66:90;;;1412:5;1405:12;;;;;;1241:187;1499:21;;-1:-1:-1;;;1499:21:90;;-1:-1:-1;;;;;1587:32:103;;;1499:21:90;;;1569:51:103;1481:15:90;;1499;;;;;;1542:18:103;;1499:21:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1550:36;;-1:-1:-1;;;1550:36:90;;-1:-1:-1;;;;;1861:15:103;;;1550:36:90;;;1843:34:103;1580:4:90;1893:18:103;;;1886:43;1481:39:90;;-1:-1:-1;1530:17:90;;1550:15;;;;;1778:18:103;;1550:36:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1530:56;;1610:5;1600:7;:15;:36;;;;1631:5;1619:9;:17;1600:36;1596:157;;;1657:59;;;3616:25:103;;;3672:2;3657:18;;3650:34;;;1657:59:90;;3589:18:103;1657:59:90;;;;;;;1737:5;1730:12;;;;;;;;1596:157;1956:119;;;-1:-1:-1;;;;;2198:15:103;;;1956:119:90;;;2180:34:103;2250:15;;;2230:18;;;2223:43;2282:18;;;;2275:34;;;1956:119:90;;;;;;;;;;2115:18:103;;;;1956:119:90;;;;;;;-1:-1:-1;;;;;1956:119:90;-1:-1:-1;;;1956:119:90;;;1923:153;;-1:-1:-1;;;;1923:19:90;;;;:153;;1956:119;1923:153;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1883:193;;;;2097:11;:118;;;;-1:-1:-1;2134:11:90;;:16;2113:101;;;;2168:4;:11;2183:2;2168:17;:45;;;;;2200:4;2189:24;;;;;;;;;;;;:::i;:::-;2087:128;;2231:7;2226:103;;2259:59;2287:11;2300:4;:11;2313:4;2259:59;;;;;;;;:::i;:::-;;;;;;;;2226:103;913:1422;;;;;;;;;;;;:::o;14:297:103:-;;134:2;122:9;113:7;109:23;105:32;102:2;;;155:6;147;140:22;102:2;192:9;186:16;245:5;238:13;231:21;224:5;221:32;211:2;;272:6;264;257:22;211:2;300:5;92:219;-1:-1:-1;;;92:219:103:o;316:624::-;;;;;495:3;483:9;474:7;470:23;466:33;463:2;;;517:6;509;502:22;463:2;561:9;548:23;580:31;605:5;580:31;:::i;:::-;630:5;-1:-1:-1;687:2:103;672:18;;659:32;700:33;659:32;700:33;:::i;:::-;752:7;-1:-1:-1;811:2:103;796:18;;783:32;824:33;783:32;824:33;:::i;:::-;453:487;;;;-1:-1:-1;876:7:103;;930:2;915:18;902:32;;-1:-1:-1;;453:487:103:o;945:194::-;;1068:2;1056:9;1047:7;1043:23;1039:32;1036:2;;;1089:6;1081;1074:22;1036:2;-1:-1:-1;1117:16:103;;1026:113;-1:-1:-1;1026:113:103:o;1144:274::-;;1311:6;1305:13;1327:53;1373:6;1368:3;1361:4;1353:6;1349:17;1327:53;:::i;:::-;1396:16;;;;;1281:137;-1:-1:-1;;1281:137:103:o;2902:535::-;;3113:6;3106:14;3099:22;3088:9;3081:41;3158:6;3153:2;3142:9;3138:18;3131:34;3201:2;3196;3185:9;3181:18;3174:30;3233:6;3227:13;3276:6;3271:2;3260:9;3256:18;3249:34;3292:67;3352:6;3346:3;3335:9;3331:19;3326:2;3318:6;3314:15;3292:67;:::i;:::-;3420:2;3399:15;-1:-1:-1;;3395:29:103;3380:45;;;;3427:3;3376:55;;3071:366;-1:-1:-1;;;;3071:366:103:o;3695:258::-;3767:1;3777:113;3791:6;3788:1;3785:13;3777:113;;;3867:11;;;3861:18;3848:11;;;3841:39;3813:2;3806:10;3777:113;;;3908:6;3905:1;3902:13;3899:2;;;3943:1;3934:6;3929:3;3925:16;3918:27;3899:2;;3748:205;;;:::o;3958:131::-;-1:-1:-1;;;;;4033:31:103;;4023:42;;4013:2;;4079:1;4076;4069:12;4013:2;4003:86;:::o",
"language": "Solidity",
"natspec": {
"kind": "dev",
"methods": {},
"version": 1
},
"offset": [
161,
739
],
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x86AA75D7 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x3AC JUMP JUMPDEST PUSH2 0x57 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x65 DUP6 DUP6 DUP6 DUP6 PUSH2 0x70 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND EXTCODESIZE ISZERO ISZERO SWAP1 DUP7 AND ISZERO DUP1 PUSH2 0x97 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ISZERO JUMPDEST DUP1 PUSH2 0xA0 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xFB JUMPI PUSH1 0x40 DUP1 MLOAD DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP8 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH32 0xE2A67C968620B6E8891E10A48C5D0C958EC8DC14D420FF7A2A1B16E7C5EDE2B7 SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG1 PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x68 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP10 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x154 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x178 SWAP2 SWAP1 PUSH2 0x3FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP11 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1FD SWAP2 SWAP1 PUSH2 0x3FC JUMP JUMPDEST SWAP1 POP DUP6 DUP3 LT DUP1 PUSH2 0x20C JUMPI POP DUP6 DUP2 LT JUMPDEST ISZERO PUSH2 0x257 JUMPI PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x80F73CF7014D047C01587FB6C83A8052D5088F7DC1AA8C47E37544397B9D643A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x0 SWAP5 POP POP POP POP POP PUSH2 0x68 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP11 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP14 AND SWAP2 PUSH2 0x2BB SWAP2 SWAP1 PUSH2 0x414 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2F8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x333 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x333 JUMPI POP DUP1 MLOAD PUSH1 0x20 EQ DUP1 ISZERO PUSH2 0x333 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x333 SWAP2 SWAP1 PUSH2 0x385 JUMP JUMPDEST SWAP7 POP DUP7 PUSH2 0x377 JUMPI PUSH32 0x16B21B374049DCEBF0872579E85D4E9D5902788178B61BD82892C4B70584814B DUP3 DUP3 MLOAD DUP4 PUSH1 0x40 MLOAD PUSH2 0x36E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x430 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x396 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3A5 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3C1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3CC DUP2 PUSH2 0x4A3 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3DC DUP2 PUSH2 0x4A3 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3EC DUP2 PUSH2 0x4A3 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x426 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x473 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 ISZERO ISZERO DUP3 MSTORE DUP4 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x45D DUP2 PUSH1 0x80 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x473 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x80 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x48E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x476 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x49D JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xF730B78A77D890768C2D6D8A0D9EF6B4CC0B1603C112A2106293F7610D1D2164 PUSH20 0x6F6C634300080200330000000000000000000000 ",
"pcMap": {
"0": {
"offset": [
161,
739
],
"op": "PUSH1",
"path": "100",
"value": "0x80"
},
"2": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH1",
"path": "100",
"value": "0x40"
},
"4": {
"fn": null,
"offset": [
161,
739
],
"op": "MSTORE",
"path": "100"
},
"5": {
"fn": null,
"offset": [
161,
739
],
"op": "CALLVALUE",
"path": "100"
},
"6": {
"fn": null,
"offset": [
161,
739
],
"op": "DUP1",
"path": "100"
},
"7": {
"fn": null,
"offset": [
161,
739
],
"op": "ISZERO",
"path": "100"
},
"8": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH2",
"path": "100",
"value": "0x10"
},
"11": {
"fn": null,
"offset": [
161,
739
],
"op": "JUMPI",
"path": "100"
},
"12": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH1",
"path": "100",
"value": "0x0"
},
"14": {
"fn": null,
"offset": [
161,
739
],
"op": "DUP1",
"path": "100"
},
"15": {
"dev": "Cannot send ether to nonpayable function",
"fn": null,
"offset": [
161,
739
],
"op": "REVERT",
"path": "100"
},
"16": {
"fn": null,
"offset": [
161,
739
],
"op": "JUMPDEST",
"path": "100"
},
"17": {
"fn": null,
"offset": [
161,
739
],
"op": "POP",
"path": "100"
},
"18": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH1",
"path": "100",
"value": "0x4"
},
"20": {
"fn": null,
"offset": [
161,
739
],
"op": "CALLDATASIZE",
"path": "100"
},
"21": {
"fn": null,
"offset": [
161,
739
],
"op": "LT",
"path": "100"
},
"22": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH2",
"path": "100",
"value": "0x2B"
},
"25": {
"fn": null,
"offset": [
161,
739
],
"op": "JUMPI",
"path": "100"
},
"26": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH1",
"path": "100",
"value": "0x0"
},
"28": {
"fn": null,
"offset": [
161,
739
],
"op": "CALLDATALOAD",
"path": "100"
},
"29": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH1",
"path": "100",
"value": "0xE0"
},
"31": {
"fn": null,
"offset": [
161,
739
],
"op": "SHR",
"path": "100"
},
"32": {
"fn": null,
"offset": [
161,
739
],
"op": "DUP1",
"path": "100"
},
"33": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH4",
"path": "100",
"value": "0x86AA75D7"
},
"38": {
"fn": null,
"offset": [
161,
739
],
"op": "EQ",
"path": "100"
},
"39": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH2",
"path": "100",
"value": "0x30"
},
"42": {
"fn": null,
"offset": [
161,
739
],
"op": "JUMPI",
"path": "100"
},
"43": {
"fn": null,
"offset": [
161,
739
],
"op": "JUMPDEST",
"path": "100"
},
"44": {
"fn": null,
"offset": [
161,
739
],
"op": "PUSH1",
"path": "100",
"value": "0x0"
},
"46": {
"fn": null,
"offset": [
161,
739
],
"op": "DUP1",
"path": "100"
},
"47": {
"first_revert": true,
"fn": null,
"offset": [
161,
739
],
"op": "REVERT",
"path": "100"
},
"48": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "JUMPDEST",
"path": "100"
},
"49": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "PUSH2",
"path": "100",
"value": "0x43"
},
"52": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "PUSH2",
"path": "100",
"value": "0x3E"
},
"55": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "CALLDATASIZE",
"path": "100"
},
"56": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "PUSH1",
"path": "100",
"value": "0x4"
},
"58": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "PUSH2",
"path": "100",
"value": "0x3AC"
},
"61": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"jump": "i",
"offset": [
482,
736
],
"op": "JUMP",
"path": "100"
},
"62": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "JUMPDEST",
"path": "100"
},
"63": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "PUSH2",
"path": "100",
"value": "0x57"
},
"66": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"jump": "i",
"offset": [
482,
736
],
"op": "JUMP",
"path": "100"
},
"67": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "JUMPDEST",
"path": "100"
},
"68": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "PUSH1",
"path": "100",
"value": "0x40"
},
"70": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "MLOAD",
"path": "100"
},
"71": {
"op": "SWAP1"
},
"72": {
"op": "ISZERO"
},
"73": {
"op": "ISZERO"
},
"74": {
"op": "DUP2"
},
"75": {
"op": "MSTORE"
},
"76": {
"op": "PUSH1",
"value": "0x20"
},
"78": {
"op": "ADD"
},
"79": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "PUSH1",
"path": "100",
"value": "0x40"
},
"81": {
"fn": "TestTransferFrom.unifiedTransferFrom",
"offset": [
482,
736
],
"op": "MLOAD",
"path": "100"