{
    "contractName": "DemoHelpers",
    "abi": [
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "_key",
                    "type": "string"
                }
            ],
            "name": "getHash",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "result",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getTimestamp",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "result",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "sender",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "receiver",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "inputAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes32",
                    "name": "hashLock",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "expiration",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                }
            ],
            "name": "getTxId",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "result",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_key\",\"type\":\"string\"}],\"name\":\"getHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"result\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"hashLock\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"expiration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getTxId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"result\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/peter/a/cacti-2/packages/cactus-test-plugin-htlc-eth-besu-erc20/src/test/solidity/token-erc20-contract/DemoHelpers.sol\":\"DemoHelpers\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/peter/a/cacti-2/packages/cactus-test-plugin-htlc-eth-besu-erc20/src/test/solidity/token-erc20-contract/DemoHelpers.sol\":{\"keccak256\":\"0xd76915c48ef773b98e625635e46b2a5506b9d1c643ec1fc2e03db8a434896efc\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b37e4dbaa96fb417676e1ffa477c8be7d22206b05da3e8f2b698b39468a842ca\",\"dweb:/ipfs/QmSaErkiknyRSDZUuesKcxtu9PPa7ew2jC3e2ZX8qUgAGm\"]}},\"version\":1}",
    "bytecode": "608060405234801561001057600080fd5b506102ce806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063188ec356146100465780635b6beeb91461005a578063a9a352091461006d575b600080fd5b425b60405190815260200160405180910390f35b61004861006836600461011e565b6100d8565b61004861007b3660046101eb565b604080516001600160a01b03978816602080830191909152968816818301526060810195909552608085019390935260a084019190915290931660c0808301919091528351808303909101815260e0909101909252815191012090565b6000816040516020016100eb919061024a565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561013057600080fd5b813567ffffffffffffffff8082111561014857600080fd5b818401915084601f83011261015c57600080fd5b81358181111561016e5761016e610108565b604051601f8201601f19908116603f0116810190838211818310171561019657610196610108565b816040528281528760208487010111156101af57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80356001600160a01b03811681146101e657600080fd5b919050565b60008060008060008060c0878903121561020457600080fd5b61020d876101cf565b955061021b602088016101cf565b945060408701359350606087013592506080870135915061023e60a088016101cf565b90509295509295509295565b600060208083528351808285015260005b818110156102775785810183015185820160400152820161025b565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220a3091693ddb2ca9ebb38baa348797a852c936d5e2b19c209eba45b1f73ba8ba664736f6c63430008130033",
    "deployedBytecode": "608060405234801561001057600080fd5b50600436106100415760003560e01c8063188ec356146100465780635b6beeb91461005a578063a9a352091461006d575b600080fd5b425b60405190815260200160405180910390f35b61004861006836600461011e565b6100d8565b61004861007b3660046101eb565b604080516001600160a01b03978816602080830191909152968816818301526060810195909552608085019390935260a084019190915290931660c0808301919091528351808303909101815260e0909101909252815191012090565b6000816040516020016100eb919061024a565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561013057600080fd5b813567ffffffffffffffff8082111561014857600080fd5b818401915084601f83011261015c57600080fd5b81358181111561016e5761016e610108565b604051601f8201601f19908116603f0116810190838211818310171561019657610196610108565b816040528281528760208487010111156101af57600080fd5b826020860160208301376000928101602001929092525095945050505050565b80356001600160a01b03811681146101e657600080fd5b919050565b60008060008060008060c0878903121561020457600080fd5b61020d876101cf565b955061021b602088016101cf565b945060408701359350606087013592506080870135915061023e60a088016101cf565b90509295509295509295565b600060208083528351808285015260005b818110156102775785810183015185820160400152820161025b565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220a3091693ddb2ca9ebb38baa348797a852c936d5e2b19c209eba45b1f73ba8ba664736f6c63430008130033",
    "sourceMap": "99:573:0:-:0;;;;;;;;;;;;;;;;;;;",
    "deployedSourceMap": "99:573:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;261:100;339:15;261:100;;;160:25:1;;;148:2;133:18;261:100:0;;;;;;;131:124;;;;;;:::i;:::-;;:::i;367:303::-;;;;;;:::i;:::-;576:77;;;-1:-1:-1;;;;;3057:15:1;;;576:77:0;;;;3039:34:1;;;;3109:15;;;3089:18;;;3082:43;3141:18;;;3134:34;;;;3184:18;;;3177:34;;;;3227:19;;;3220:35;;;;3292:15;;;3271:19;;;;3264:44;;;;576:77:0;;;;;;;;;;2973:19:1;;;;576:77:0;;;553:110;;;;;;367:303;131:124;189:14;242:4;231:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;221:27;;;;;;214:34;;131:124;;;:::o;196:127:1:-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:922;397:6;450:2;438:9;429:7;425:23;421:32;418:52;;;466:1;463;456:12;418:52;506:9;493:23;535:18;576:2;568:6;565:14;562:34;;;592:1;589;582:12;562:34;630:6;619:9;615:22;605:32;;675:7;668:4;664:2;660:13;656:27;646:55;;697:1;694;687:12;646:55;733:2;720:16;755:2;751;748:10;745:36;;;761:18;;:::i;:::-;836:2;830:9;804:2;890:13;;-1:-1:-1;;886:22:1;;;910:2;882:31;878:40;866:53;;;934:18;;;954:22;;;931:46;928:72;;;980:18;;:::i;:::-;1020:10;1016:2;1009:22;1055:2;1047:6;1040:18;1095:7;1090:2;1085;1081;1077:11;1073:20;1070:33;1067:53;;;1116:1;1113;1106:12;1067:53;1172:2;1167;1163;1159:11;1154:2;1146:6;1142:15;1129:46;1217:1;1195:15;;;1212:2;1191:24;1184:35;;;;-1:-1:-1;1199:6:1;328:922;-1:-1:-1;;;;;328:922:1:o;1437:173::-;1505:20;;-1:-1:-1;;;;;1554:31:1;;1544:42;;1534:70;;1600:1;1597;1590:12;1534:70;1437:173;;;:::o;1615:541::-;1719:6;1727;1735;1743;1751;1759;1812:3;1800:9;1791:7;1787:23;1783:33;1780:53;;;1829:1;1826;1819:12;1780:53;1852:29;1871:9;1852:29;:::i;:::-;1842:39;;1900:38;1934:2;1923:9;1919:18;1900:38;:::i;:::-;1890:48;;1985:2;1974:9;1970:18;1957:32;1947:42;;2036:2;2025:9;2021:18;2008:32;1998:42;;2087:3;2076:9;2072:19;2059:33;2049:43;;2111:39;2145:3;2134:9;2130:19;2111:39;:::i;:::-;2101:49;;1615:541;;;;;;;;:::o;2161:548::-;2273:4;2302:2;2331;2320:9;2313:21;2363:6;2357:13;2406:6;2401:2;2390:9;2386:18;2379:34;2431:1;2441:140;2455:6;2452:1;2449:13;2441:140;;;2550:14;;;2546:23;;2540:30;2516:17;;;2535:2;2512:26;2505:66;2470:10;;2441:140;;;2445:3;2630:1;2625:2;2616:6;2605:9;2601:22;2597:31;2590:42;2700:2;2693;2689:7;2684:2;2676:6;2672:15;2668:29;2657:9;2653:45;2649:54;2641:62;;;;2161:548;;;;:::o",
    "sourcePath": "/home/peter/a/cacti-2/packages/cactus-test-plugin-htlc-eth-besu-erc20/src/test/solidity/token-erc20-contract/DemoHelpers.sol",
    "compiler": {
        "name": "solc",
        "version": "0.8.19+commit.7dd6d404"
    },
    "ast": {
        "absolutePath": "/home/peter/a/cacti-2/packages/cactus-test-plugin-htlc-eth-besu-erc20/src/test/solidity/token-erc20-contract/DemoHelpers.sol",
        "exportedSymbols": {
            "DemoHelpers": [
                57
            ]
        },
        "id": 58,
        "license": "Apache-2.0",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 1,
                "literals": [
                    "solidity",
                    "0.8",
                    ".19"
                ],
                "nodeType": "PragmaDirective",
                "src": "40:23:0"
            },
            {
                "id": 2,
                "literals": [
                    "experimental",
                    "ABIEncoderV2"
                ],
                "nodeType": "PragmaDirective",
                "src": "64:33:0"
            },
            {
                "abstract": false,
                "baseContracts": [],
                "canonicalName": "DemoHelpers",
                "contractDependencies": [],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 57,
                "linearizedBaseContracts": [
                    57
                ],
                "name": "DemoHelpers",
                "nameLocation": "108:11:0",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "body": {
                            "id": 16,
                            "nodeType": "Block",
                            "src": "205:50:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 12,
                                                        "name": "_key",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4,
                                                        "src": "242:4:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 10,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967295,
                                                        "src": "231:3:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 11,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "235:6:0",
                                                    "memberName": "encode",
                                                    "nodeType": "MemberAccess",
                                                    "src": "231:10:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 13,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "231:16:0",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "id": 9,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967288,
                                            "src": "221:9:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 14,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "221:27:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "functionReturnParameters": 8,
                                    "id": 15,
                                    "nodeType": "Return",
                                    "src": "214:34:0"
                                }
                            ]
                        },
                        "functionSelector": "5b6beeb9",
                        "id": 17,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getHash",
                        "nameLocation": "140:7:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4,
                                    "mutability": "mutable",
                                    "name": "_key",
                                    "nameLocation": "162:4:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 17,
                                    "src": "148:18:0",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 3,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "148:6:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "147:20:0"
                        },
                        "returnParameters": {
                            "id": 8,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 7,
                                    "mutability": "mutable",
                                    "name": "result",
                                    "nameLocation": "197:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 17,
                                    "src": "189:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "189:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "188:16:0"
                        },
                        "scope": 57,
                        "src": "131:124:0",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 25,
                            "nodeType": "Block",
                            "src": "322:39:0",
                            "statements": [
                                {
                                    "expression": {
                                        "expression": {
                                            "id": 22,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967292,
                                            "src": "339:5:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_block",
                                                "typeString": "block"
                                            }
                                        },
                                        "id": 23,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberLocation": "345:9:0",
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "339:15:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 21,
                                    "id": 24,
                                    "nodeType": "Return",
                                    "src": "332:22:0"
                                }
                            ]
                        },
                        "functionSelector": "188ec356",
                        "id": 26,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getTimestamp",
                        "nameLocation": "270:12:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 18,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "282:2:0"
                        },
                        "returnParameters": {
                            "id": 21,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 20,
                                    "mutability": "mutable",
                                    "name": "result",
                                    "nameLocation": "314:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 26,
                                    "src": "306:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 19,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "306:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "305:16:0"
                        },
                        "scope": 57,
                        "src": "261:100:0",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 55,
                            "nodeType": "Block",
                            "src": "536:134:0",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 46,
                                                        "name": "sender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 28,
                                                        "src": "587:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 47,
                                                        "name": "receiver",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 30,
                                                        "src": "595:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 48,
                                                        "name": "inputAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 32,
                                                        "src": "605:11:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 49,
                                                        "name": "hashLock",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 34,
                                                        "src": "618:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    {
                                                        "id": 50,
                                                        "name": "expiration",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 36,
                                                        "src": "628:10:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "id": 51,
                                                        "name": "tokenAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 38,
                                                        "src": "640:12:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 44,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4294967295,
                                                        "src": "576:3:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 45,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberLocation": "580:6:0",
                                                    "memberName": "encode",
                                                    "nodeType": "MemberAccess",
                                                    "src": "576:10:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 52,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "576:77:0",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            ],
                                            "id": 43,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967288,
                                            "src": "553:9:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                        },
                                        "id": 53,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "553:110:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "functionReturnParameters": 42,
                                    "id": 54,
                                    "nodeType": "Return",
                                    "src": "546:117:0"
                                }
                            ]
                        },
                        "functionSelector": "a9a35209",
                        "id": 56,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getTxId",
                        "nameLocation": "376:7:0",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 39,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 28,
                                    "mutability": "mutable",
                                    "name": "sender",
                                    "nameLocation": "392:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "384:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 27,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "384:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 30,
                                    "mutability": "mutable",
                                    "name": "receiver",
                                    "nameLocation": "408:8:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "400:16:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 29,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "400:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 32,
                                    "mutability": "mutable",
                                    "name": "inputAmount",
                                    "nameLocation": "426:11:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "418:19:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 31,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "418:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 34,
                                    "mutability": "mutable",
                                    "name": "hashLock",
                                    "nameLocation": "447:8:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "439:16:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 33,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "439:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 36,
                                    "mutability": "mutable",
                                    "name": "expiration",
                                    "nameLocation": "465:10:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "457:18:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 35,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "457:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 38,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nameLocation": "485:12:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "477:20:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 37,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "477:7:0",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "383:115:0"
                        },
                        "returnParameters": {
                            "id": 42,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 41,
                                    "mutability": "mutable",
                                    "name": "result",
                                    "nameLocation": "528:6:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 56,
                                    "src": "520:14:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 40,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "520:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "519:16:0"
                        },
                        "scope": 57,
                        "src": "367:303:0",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "public"
                    }
                ],
                "scope": 58,
                "src": "99:573:0",
                "usedErrors": []
            }
        ],
        "src": "40:632:0"
    },
    "functionHashes": {
        "getHash(string)": "5b6beeb9",
        "getTimestamp()": "188ec356",
        "getTxId(address,address,uint256,bytes32,uint256,address)": "a9a35209"
    },
    "gasEstimates": {
        "creation": {
            "codeDepositCost": "143600",
            "executionCost": "190",
            "totalCost": "143790"
        },
        "external": {
            "getHash(string)": "infinite",
            "getTimestamp()": "146",
            "getTxId(address,address,uint256,bytes32,uint256,address)": "infinite"
        }
    }
}
