{
  "abi": [],
  "bytecode": {
    "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e8789356826d315cc8b3710896ad1ce0dec6a657c023eb3dff12129c59422e964736f6c63430008160033",
    "sourceMap": "66:66622:15:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;66:66622:15;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201e8789356826d315cc8b3710896ad1ce0dec6a657c023eb3dff12129c59422e964736f6c63430008160033",
    "sourceMap": "66:66622:15:-:0;;;;;;;;",
    "linkReferences": {}
  },
  "methodIdentifiers": {},
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/forge-std/src/console.sol\":\"console\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.22+commit.4fc1097e"
    },
    "language": "Solidity",
    "output": {
      "abi": [],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@uniswap/v3-core/=lib_uniswap/v3-core/",
        "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "v3-core/=lib_uniswap/v3-core/",
        "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
      ],
      "optimizer": {
        "runs": 999999999,
        "details": {
          "peephole": true,
          "inliner": true,
          "jumpdestRemover": true,
          "orderLiterals": true,
          "deduplicate": true,
          "cse": true,
          "constantOptimizer": true,
          "yul": true,
          "yulDetails": {
            "stackAllocation": true,
            "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
          }
        }
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib/forge-std/src/console.sol": "console"
      },
      "libraries": {}
    },
    "sources": {
      "lib/forge-std/src/console.sol": {
        "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba",
        "urls": [
          "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70",
          "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"
        ],
        "license": "MIT"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib/forge-std/src/console.sol",
    "id": 21529,
    "exportedSymbols": {
      "console": [
        21528
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:66656:15",
    "nodes": [
      {
        "id": 13466,
        "nodeType": "PragmaDirective",
        "src": "32:32:15",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.4",
          ".22",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 21528,
        "nodeType": "ContractDefinition",
        "src": "66:66622:15",
        "nodes": [
          {
            "id": 13472,
            "nodeType": "VariableDeclaration",
            "src": "88:86:15",
            "nodes": [],
            "constant": true,
            "mutability": "constant",
            "name": "CONSOLE_ADDRESS",
            "nameLocation": "105:15:15",
            "scope": 21528,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 13467,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "88:7:15",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "307830303030303030303030303030303030303036333646366537333646366336353265366336663637",
                  "id": 13470,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "131:42:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "value": "0x000000000000000000636F6e736F6c652e6c6f67"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 13469,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "123:7:15",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": {
                  "id": 13468,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "123:7:15",
                  "typeDescriptions": {}
                }
              },
              "id": 13471,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "123:51:15",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "id": 13488,
            "nodeType": "FunctionDefinition",
            "src": "181:376:15",
            "nodes": [],
            "body": {
              "id": 13487,
              "nodeType": "Block",
              "src": "241:316:15",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    13478
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13478,
                      "mutability": "mutable",
                      "name": "payloadLength",
                      "nameLocation": "259:13:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 13487,
                      "src": "251:21:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 13477,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "251:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13481,
                  "initialValue": {
                    "expression": {
                      "id": 13479,
                      "name": "payload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13474,
                      "src": "275:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 13480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "283:6:15",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "275:14:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "251:38:15"
                },
                {
                  "assignments": [
                    13483
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 13483,
                      "mutability": "mutable",
                      "name": "consoleAddress",
                      "nameLocation": "307:14:15",
                      "nodeType": "VariableDeclaration",
                      "scope": 13487,
                      "src": "299:22:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 13482,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "299:7:15",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 13485,
                  "initialValue": {
                    "id": 13484,
                    "name": "CONSOLE_ADDRESS",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 13472,
                    "src": "324:15:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "299:40:15"
                },
                {
                  "AST": {
                    "nativeSrc": "401:150:15",
                    "nodeType": "YulBlock",
                    "src": "401:150:15",
                    "statements": [
                      {
                        "nativeSrc": "415:36:15",
                        "nodeType": "YulVariableDeclaration",
                        "src": "415:36:15",
                        "value": {
                          "arguments": [
                            {
                              "name": "payload",
                              "nativeSrc": "439:7:15",
                              "nodeType": "YulIdentifier",
                              "src": "439:7:15"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "448:2:15",
                              "nodeType": "YulLiteral",
                              "src": "448:2:15",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "435:3:15",
                            "nodeType": "YulIdentifier",
                            "src": "435:3:15"
                          },
                          "nativeSrc": "435:16:15",
                          "nodeType": "YulFunctionCall",
                          "src": "435:16:15"
                        },
                        "variables": [
                          {
                            "name": "payloadStart",
                            "nativeSrc": "419:12:15",
                            "nodeType": "YulTypedName",
                            "src": "419:12:15",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nativeSrc": "464:77:15",
                        "nodeType": "YulVariableDeclaration",
                        "src": "464:77:15",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [],
                              "functionName": {
                                "name": "gas",
                                "nativeSrc": "484:3:15",
                                "nodeType": "YulIdentifier",
                                "src": "484:3:15"
                              },
                              "nativeSrc": "484:5:15",
                              "nodeType": "YulFunctionCall",
                              "src": "484:5:15"
                            },
                            {
                              "name": "consoleAddress",
                              "nativeSrc": "491:14:15",
                              "nodeType": "YulIdentifier",
                              "src": "491:14:15"
                            },
                            {
                              "name": "payloadStart",
                              "nativeSrc": "507:12:15",
                              "nodeType": "YulIdentifier",
                              "src": "507:12:15"
                            },
                            {
                              "name": "payloadLength",
                              "nativeSrc": "521:13:15",
                              "nodeType": "YulIdentifier",
                              "src": "521:13:15"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "536:1:15",
                              "nodeType": "YulLiteral",
                              "src": "536:1:15",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "539:1:15",
                              "nodeType": "YulLiteral",
                              "src": "539:1:15",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "staticcall",
                            "nativeSrc": "473:10:15",
                            "nodeType": "YulIdentifier",
                            "src": "473:10:15"
                          },
                          "nativeSrc": "473:68:15",
                          "nodeType": "YulFunctionCall",
                          "src": "473:68:15"
                        },
                        "variables": [
                          {
                            "name": "r",
                            "nativeSrc": "468:1:15",
                            "nodeType": "YulTypedName",
                            "src": "468:1:15",
                            "type": ""
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": "@solidity memory-safe-assembly",
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 13483,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "491:14:15",
                      "valueSize": 1
                    },
                    {
                      "declaration": 13474,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "439:7:15",
                      "valueSize": 1
                    },
                    {
                      "declaration": 13478,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "521:13:15",
                      "valueSize": 1
                    }
                  ],
                  "id": 13486,
                  "nodeType": "InlineAssembly",
                  "src": "392:159:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_sendLogPayload",
            "nameLocation": "190:15:15",
            "parameters": {
              "id": 13475,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13474,
                  "mutability": "mutable",
                  "name": "payload",
                  "nameLocation": "219:7:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13488,
                  "src": "206:20:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13473,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "206:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "205:22:15"
            },
            "returnParameters": {
              "id": 13476,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "241:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 13499,
            "nodeType": "FunctionDefinition",
            "src": "563:95:15",
            "nodes": [],
            "body": {
              "id": 13498,
              "nodeType": "Block",
              "src": "592:66:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672829",
                            "id": 13494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "642:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_51973ec9d4c1929bdd5b149c064d46aee47e92a7e2bb5f7a20c7b9cfb0d13b39",
                              "typeString": "literal_string \"log()\""
                            },
                            "value": "log()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_51973ec9d4c1929bdd5b149c064d46aee47e92a7e2bb5f7a20c7b9cfb0d13b39",
                              "typeString": "literal_string \"log()\""
                            }
                          ],
                          "expression": {
                            "id": 13492,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "618:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "622:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "618:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "618:32:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13491,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "602:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "602:49:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13497,
                  "nodeType": "ExpressionStatement",
                  "src": "602:49:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "572:3:15",
            "parameters": {
              "id": 13489,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "575:2:15"
            },
            "returnParameters": {
              "id": 13490,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "592:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13513,
            "nodeType": "FunctionDefinition",
            "src": "664:111:15",
            "nodes": [],
            "body": {
              "id": 13512,
              "nodeType": "Block",
              "src": "702:73:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728696e7429",
                            "id": 13507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "752:10:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4e0c1d1dcf573259576e2a7e591d366143f88fb7f7e57df09852da9c36797f2e",
                              "typeString": "literal_string \"log(int)\""
                            },
                            "value": "log(int)"
                          },
                          {
                            "id": 13508,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13501,
                            "src": "764:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4e0c1d1dcf573259576e2a7e591d366143f88fb7f7e57df09852da9c36797f2e",
                              "typeString": "literal_string \"log(int)\""
                            },
                            {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          ],
                          "expression": {
                            "id": 13505,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "728:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13506,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "732:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "728:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "728:39:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13504,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "712:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "712:56:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13511,
                  "nodeType": "ExpressionStatement",
                  "src": "712:56:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logInt",
            "nameLocation": "673:6:15",
            "parameters": {
              "id": 13502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13501,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "684:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13513,
                  "src": "680:6:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 13500,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "680:3:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "679:8:15"
            },
            "returnParameters": {
              "id": 13503,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "702:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13527,
            "nodeType": "FunctionDefinition",
            "src": "781:114:15",
            "nodes": [],
            "body": {
              "id": 13526,
              "nodeType": "Block",
              "src": "821:74:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e7429",
                            "id": 13521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "871:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f5b1bba92d8f98cf25e27c94d7fc7cbfbae95a49dfe5ab0cdf64ddd7181bb984",
                              "typeString": "literal_string \"log(uint)\""
                            },
                            "value": "log(uint)"
                          },
                          {
                            "id": 13522,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13515,
                            "src": "884:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f5b1bba92d8f98cf25e27c94d7fc7cbfbae95a49dfe5ab0cdf64ddd7181bb984",
                              "typeString": "literal_string \"log(uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 13519,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "847:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "851:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "847:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "847:40:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13518,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "831:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "831:57:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13525,
                  "nodeType": "ExpressionStatement",
                  "src": "831:57:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logUint",
            "nameLocation": "790:7:15",
            "parameters": {
              "id": 13516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13515,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "803:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13527,
                  "src": "798:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 13514,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "798:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "797:9:15"
            },
            "returnParameters": {
              "id": 13517,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "821:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13541,
            "nodeType": "FunctionDefinition",
            "src": "901:127:15",
            "nodes": [],
            "body": {
              "id": 13540,
              "nodeType": "Block",
              "src": "952:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e6729",
                            "id": 13535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1002:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                              "typeString": "literal_string \"log(string)\""
                            },
                            "value": "log(string)"
                          },
                          {
                            "id": 13536,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13529,
                            "src": "1017:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                              "typeString": "literal_string \"log(string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 13533,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "978:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "982:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "978:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "978:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13532,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "962:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13538,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "962:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13539,
                  "nodeType": "ExpressionStatement",
                  "src": "962:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logString",
            "nameLocation": "910:9:15",
            "parameters": {
              "id": 13530,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13529,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "934:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13541,
                  "src": "920:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 13528,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "920:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "919:18:15"
            },
            "returnParameters": {
              "id": 13531,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "952:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13555,
            "nodeType": "FunctionDefinition",
            "src": "1034:114:15",
            "nodes": [],
            "body": {
              "id": 13554,
              "nodeType": "Block",
              "src": "1074:74:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c29",
                            "id": 13549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1124:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                              "typeString": "literal_string \"log(bool)\""
                            },
                            "value": "log(bool)"
                          },
                          {
                            "id": 13550,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13543,
                            "src": "1137:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                              "typeString": "literal_string \"log(bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 13547,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1100:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1104:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1100:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13551,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1100:40:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13546,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "1084:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13552,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1084:57:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13553,
                  "nodeType": "ExpressionStatement",
                  "src": "1084:57:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBool",
            "nameLocation": "1043:7:15",
            "parameters": {
              "id": 13544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13543,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1056:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13555,
                  "src": "1051:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 13542,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1051:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1050:9:15"
            },
            "returnParameters": {
              "id": 13545,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1074:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13569,
            "nodeType": "FunctionDefinition",
            "src": "1154:123:15",
            "nodes": [],
            "body": {
              "id": 13568,
              "nodeType": "Block",
              "src": "1200:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286164647265737329",
                            "id": 13563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1250:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                              "typeString": "literal_string \"log(address)\""
                            },
                            "value": "log(address)"
                          },
                          {
                            "id": 13564,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13557,
                            "src": "1266:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                              "typeString": "literal_string \"log(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 13561,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1226:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1230:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1226:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1226:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13560,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "1210:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1210:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13567,
                  "nodeType": "ExpressionStatement",
                  "src": "1210:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logAddress",
            "nameLocation": "1163:10:15",
            "parameters": {
              "id": 13558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13557,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1182:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13569,
                  "src": "1174:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 13556,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1174:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1173:12:15"
            },
            "returnParameters": {
              "id": 13559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1200:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13583,
            "nodeType": "FunctionDefinition",
            "src": "1283:124:15",
            "nodes": [],
            "body": {
              "id": 13582,
              "nodeType": "Block",
              "src": "1332:75:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728627974657329",
                            "id": 13577,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1382:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0be77f5642494da7d212b92a3472c4f471abb24e17467f41788e7de7915d6238",
                              "typeString": "literal_string \"log(bytes)\""
                            },
                            "value": "log(bytes)"
                          },
                          {
                            "id": 13578,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13571,
                            "src": "1396:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0be77f5642494da7d212b92a3472c4f471abb24e17467f41788e7de7915d6238",
                              "typeString": "literal_string \"log(bytes)\""
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "id": 13575,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1358:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1362:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1358:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13579,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1358:41:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13574,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "1342:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1342:58:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13581,
                  "nodeType": "ExpressionStatement",
                  "src": "1342:58:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes",
            "nameLocation": "1292:8:15",
            "parameters": {
              "id": 13572,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13571,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1314:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13583,
                  "src": "1301:15:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 13570,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1301:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1300:17:15"
            },
            "returnParameters": {
              "id": 13573,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1332:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13597,
            "nodeType": "FunctionDefinition",
            "src": "1413:120:15",
            "nodes": [],
            "body": {
              "id": 13596,
              "nodeType": "Block",
              "src": "1457:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733129",
                            "id": 13591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1507:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6e18a1285e3dfba09579e846ff83d5e4ffae1b869c8fc4323752bab794e41041",
                              "typeString": "literal_string \"log(bytes1)\""
                            },
                            "value": "log(bytes1)"
                          },
                          {
                            "id": 13592,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13585,
                            "src": "1522:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6e18a1285e3dfba09579e846ff83d5e4ffae1b869c8fc4323752bab794e41041",
                              "typeString": "literal_string \"log(bytes1)\""
                            },
                            {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          ],
                          "expression": {
                            "id": 13589,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1483:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1487:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1483:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1483:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13588,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "1467:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13594,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1467:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13595,
                  "nodeType": "ExpressionStatement",
                  "src": "1467:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes1",
            "nameLocation": "1422:9:15",
            "parameters": {
              "id": 13586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13585,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1439:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13597,
                  "src": "1432:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes1",
                    "typeString": "bytes1"
                  },
                  "typeName": {
                    "id": 13584,
                    "name": "bytes1",
                    "nodeType": "ElementaryTypeName",
                    "src": "1432:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1431:11:15"
            },
            "returnParameters": {
              "id": 13587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1457:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13611,
            "nodeType": "FunctionDefinition",
            "src": "1539:120:15",
            "nodes": [],
            "body": {
              "id": 13610,
              "nodeType": "Block",
              "src": "1583:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733229",
                            "id": 13605,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1633:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e9b622960ff3a0e86d35e876bfeba445fab6c5686604aa116c47c1e106921224",
                              "typeString": "literal_string \"log(bytes2)\""
                            },
                            "value": "log(bytes2)"
                          },
                          {
                            "id": 13606,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13599,
                            "src": "1648:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e9b622960ff3a0e86d35e876bfeba445fab6c5686604aa116c47c1e106921224",
                              "typeString": "literal_string \"log(bytes2)\""
                            },
                            {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          ],
                          "expression": {
                            "id": 13603,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1609:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1613:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1609:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1609:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13602,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "1593:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13608,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1593:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13609,
                  "nodeType": "ExpressionStatement",
                  "src": "1593:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes2",
            "nameLocation": "1548:9:15",
            "parameters": {
              "id": 13600,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13599,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1565:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13611,
                  "src": "1558:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 13598,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "1558:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1557:11:15"
            },
            "returnParameters": {
              "id": 13601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1583:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13625,
            "nodeType": "FunctionDefinition",
            "src": "1665:120:15",
            "nodes": [],
            "body": {
              "id": 13624,
              "nodeType": "Block",
              "src": "1709:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733329",
                            "id": 13619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1759:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2d8349266851a1d92746f90a9696920643311d6bf462d9fa11e69718a636cbee",
                              "typeString": "literal_string \"log(bytes3)\""
                            },
                            "value": "log(bytes3)"
                          },
                          {
                            "id": 13620,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13613,
                            "src": "1774:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes3",
                              "typeString": "bytes3"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2d8349266851a1d92746f90a9696920643311d6bf462d9fa11e69718a636cbee",
                              "typeString": "literal_string \"log(bytes3)\""
                            },
                            {
                              "typeIdentifier": "t_bytes3",
                              "typeString": "bytes3"
                            }
                          ],
                          "expression": {
                            "id": 13617,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1735:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1739:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1735:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1735:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13616,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "1719:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1719:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13623,
                  "nodeType": "ExpressionStatement",
                  "src": "1719:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes3",
            "nameLocation": "1674:9:15",
            "parameters": {
              "id": 13614,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13613,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1691:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13625,
                  "src": "1684:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes3",
                    "typeString": "bytes3"
                  },
                  "typeName": {
                    "id": 13612,
                    "name": "bytes3",
                    "nodeType": "ElementaryTypeName",
                    "src": "1684:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes3",
                      "typeString": "bytes3"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1683:11:15"
            },
            "returnParameters": {
              "id": 13615,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1709:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13639,
            "nodeType": "FunctionDefinition",
            "src": "1791:120:15",
            "nodes": [],
            "body": {
              "id": 13638,
              "nodeType": "Block",
              "src": "1835:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733429",
                            "id": 13633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1885:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e05f48d17f80c0f06e82dc14f4be9f0f654dde2e722a8d8796ad7e07f5308d55",
                              "typeString": "literal_string \"log(bytes4)\""
                            },
                            "value": "log(bytes4)"
                          },
                          {
                            "id": 13634,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13627,
                            "src": "1900:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e05f48d17f80c0f06e82dc14f4be9f0f654dde2e722a8d8796ad7e07f5308d55",
                              "typeString": "literal_string \"log(bytes4)\""
                            },
                            {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          ],
                          "expression": {
                            "id": 13631,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1861:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1865:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1861:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1861:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13630,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "1845:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1845:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13637,
                  "nodeType": "ExpressionStatement",
                  "src": "1845:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes4",
            "nameLocation": "1800:9:15",
            "parameters": {
              "id": 13628,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13627,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1817:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13639,
                  "src": "1810:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 13626,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1810:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1809:11:15"
            },
            "returnParameters": {
              "id": 13629,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1835:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13653,
            "nodeType": "FunctionDefinition",
            "src": "1917:120:15",
            "nodes": [],
            "body": {
              "id": 13652,
              "nodeType": "Block",
              "src": "1961:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733529",
                            "id": 13647,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2011:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a684808d222f8a67c08dd13085391d5e9d1825d9fb6e2da44a91b1a07d07401a",
                              "typeString": "literal_string \"log(bytes5)\""
                            },
                            "value": "log(bytes5)"
                          },
                          {
                            "id": 13648,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13641,
                            "src": "2026:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes5",
                              "typeString": "bytes5"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a684808d222f8a67c08dd13085391d5e9d1825d9fb6e2da44a91b1a07d07401a",
                              "typeString": "literal_string \"log(bytes5)\""
                            },
                            {
                              "typeIdentifier": "t_bytes5",
                              "typeString": "bytes5"
                            }
                          ],
                          "expression": {
                            "id": 13645,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "1987:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "1991:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1987:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1987:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13644,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "1971:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1971:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13651,
                  "nodeType": "ExpressionStatement",
                  "src": "1971:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes5",
            "nameLocation": "1926:9:15",
            "parameters": {
              "id": 13642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13641,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "1943:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13653,
                  "src": "1936:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes5",
                    "typeString": "bytes5"
                  },
                  "typeName": {
                    "id": 13640,
                    "name": "bytes5",
                    "nodeType": "ElementaryTypeName",
                    "src": "1936:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes5",
                      "typeString": "bytes5"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1935:11:15"
            },
            "returnParameters": {
              "id": 13643,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1961:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13667,
            "nodeType": "FunctionDefinition",
            "src": "2043:120:15",
            "nodes": [],
            "body": {
              "id": 13666,
              "nodeType": "Block",
              "src": "2087:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733629",
                            "id": 13661,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2137:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ae84a5910824668818be6031303edf0f6f3694b35d5e6f9683950d57ef12d330",
                              "typeString": "literal_string \"log(bytes6)\""
                            },
                            "value": "log(bytes6)"
                          },
                          {
                            "id": 13662,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13655,
                            "src": "2152:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes6",
                              "typeString": "bytes6"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ae84a5910824668818be6031303edf0f6f3694b35d5e6f9683950d57ef12d330",
                              "typeString": "literal_string \"log(bytes6)\""
                            },
                            {
                              "typeIdentifier": "t_bytes6",
                              "typeString": "bytes6"
                            }
                          ],
                          "expression": {
                            "id": 13659,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2113:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2117:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2113:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13663,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2113:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13658,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "2097:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13664,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2097:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13665,
                  "nodeType": "ExpressionStatement",
                  "src": "2097:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes6",
            "nameLocation": "2052:9:15",
            "parameters": {
              "id": 13656,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13655,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2069:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13667,
                  "src": "2062:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes6",
                    "typeString": "bytes6"
                  },
                  "typeName": {
                    "id": 13654,
                    "name": "bytes6",
                    "nodeType": "ElementaryTypeName",
                    "src": "2062:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes6",
                      "typeString": "bytes6"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2061:11:15"
            },
            "returnParameters": {
              "id": 13657,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2087:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13681,
            "nodeType": "FunctionDefinition",
            "src": "2169:120:15",
            "nodes": [],
            "body": {
              "id": 13680,
              "nodeType": "Block",
              "src": "2213:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733729",
                            "id": 13675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2263:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4ed57e28813457436949e4ec0a834b3c8262cd6cebd21953ee0da3400ce2de29",
                              "typeString": "literal_string \"log(bytes7)\""
                            },
                            "value": "log(bytes7)"
                          },
                          {
                            "id": 13676,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13669,
                            "src": "2278:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes7",
                              "typeString": "bytes7"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4ed57e28813457436949e4ec0a834b3c8262cd6cebd21953ee0da3400ce2de29",
                              "typeString": "literal_string \"log(bytes7)\""
                            },
                            {
                              "typeIdentifier": "t_bytes7",
                              "typeString": "bytes7"
                            }
                          ],
                          "expression": {
                            "id": 13673,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2239:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2243:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2239:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2239:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13672,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "2223:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13678,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2223:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13679,
                  "nodeType": "ExpressionStatement",
                  "src": "2223:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes7",
            "nameLocation": "2178:9:15",
            "parameters": {
              "id": 13670,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13669,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2195:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13681,
                  "src": "2188:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes7",
                    "typeString": "bytes7"
                  },
                  "typeName": {
                    "id": 13668,
                    "name": "bytes7",
                    "nodeType": "ElementaryTypeName",
                    "src": "2188:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes7",
                      "typeString": "bytes7"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2187:11:15"
            },
            "returnParameters": {
              "id": 13671,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2213:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13695,
            "nodeType": "FunctionDefinition",
            "src": "2295:120:15",
            "nodes": [],
            "body": {
              "id": 13694,
              "nodeType": "Block",
              "src": "2339:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733829",
                            "id": 13689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2389:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4f84252e5b28e1a0064346c7cd13650e2dd6020728ca468281bb2a28b42654b3",
                              "typeString": "literal_string \"log(bytes8)\""
                            },
                            "value": "log(bytes8)"
                          },
                          {
                            "id": 13690,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13683,
                            "src": "2404:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4f84252e5b28e1a0064346c7cd13650e2dd6020728ca468281bb2a28b42654b3",
                              "typeString": "literal_string \"log(bytes8)\""
                            },
                            {
                              "typeIdentifier": "t_bytes8",
                              "typeString": "bytes8"
                            }
                          ],
                          "expression": {
                            "id": 13687,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2365:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2369:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2365:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2365:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13686,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "2349:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13692,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2349:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13693,
                  "nodeType": "ExpressionStatement",
                  "src": "2349:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes8",
            "nameLocation": "2304:9:15",
            "parameters": {
              "id": 13684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13683,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2321:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13695,
                  "src": "2314:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes8",
                    "typeString": "bytes8"
                  },
                  "typeName": {
                    "id": 13682,
                    "name": "bytes8",
                    "nodeType": "ElementaryTypeName",
                    "src": "2314:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes8",
                      "typeString": "bytes8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2313:11:15"
            },
            "returnParameters": {
              "id": 13685,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2339:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13709,
            "nodeType": "FunctionDefinition",
            "src": "2421:120:15",
            "nodes": [],
            "body": {
              "id": 13708,
              "nodeType": "Block",
              "src": "2465:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672862797465733929",
                            "id": 13703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2515:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_90bd8cd0463fe91d31e59db57ee4cf8d778374c422b4b50e841266d9c2cc6667",
                              "typeString": "literal_string \"log(bytes9)\""
                            },
                            "value": "log(bytes9)"
                          },
                          {
                            "id": 13704,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13697,
                            "src": "2530:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes9",
                              "typeString": "bytes9"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_90bd8cd0463fe91d31e59db57ee4cf8d778374c422b4b50e841266d9c2cc6667",
                              "typeString": "literal_string \"log(bytes9)\""
                            },
                            {
                              "typeIdentifier": "t_bytes9",
                              "typeString": "bytes9"
                            }
                          ],
                          "expression": {
                            "id": 13701,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2491:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2495:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2491:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2491:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13700,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "2475:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2475:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13707,
                  "nodeType": "ExpressionStatement",
                  "src": "2475:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes9",
            "nameLocation": "2430:9:15",
            "parameters": {
              "id": 13698,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13697,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2447:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13709,
                  "src": "2440:9:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes9",
                    "typeString": "bytes9"
                  },
                  "typeName": {
                    "id": 13696,
                    "name": "bytes9",
                    "nodeType": "ElementaryTypeName",
                    "src": "2440:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes9",
                      "typeString": "bytes9"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2439:11:15"
            },
            "returnParameters": {
              "id": 13699,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2465:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13723,
            "nodeType": "FunctionDefinition",
            "src": "2547:123:15",
            "nodes": [],
            "body": {
              "id": 13722,
              "nodeType": "Block",
              "src": "2593:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313029",
                            "id": 13717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2643:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_013d178bb749cf32d0f7243763667360eb91576261efe5ed9be72b4a2800fd66",
                              "typeString": "literal_string \"log(bytes10)\""
                            },
                            "value": "log(bytes10)"
                          },
                          {
                            "id": 13718,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13711,
                            "src": "2659:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes10",
                              "typeString": "bytes10"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_013d178bb749cf32d0f7243763667360eb91576261efe5ed9be72b4a2800fd66",
                              "typeString": "literal_string \"log(bytes10)\""
                            },
                            {
                              "typeIdentifier": "t_bytes10",
                              "typeString": "bytes10"
                            }
                          ],
                          "expression": {
                            "id": 13715,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2619:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2623:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2619:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2619:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13714,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "2603:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2603:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13721,
                  "nodeType": "ExpressionStatement",
                  "src": "2603:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes10",
            "nameLocation": "2556:10:15",
            "parameters": {
              "id": 13712,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13711,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2575:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13723,
                  "src": "2567:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes10",
                    "typeString": "bytes10"
                  },
                  "typeName": {
                    "id": 13710,
                    "name": "bytes10",
                    "nodeType": "ElementaryTypeName",
                    "src": "2567:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes10",
                      "typeString": "bytes10"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2566:12:15"
            },
            "returnParameters": {
              "id": 13713,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2593:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13737,
            "nodeType": "FunctionDefinition",
            "src": "2676:123:15",
            "nodes": [],
            "body": {
              "id": 13736,
              "nodeType": "Block",
              "src": "2722:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313129",
                            "id": 13731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2772:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_04004a2e5bef8ca2e7ffd661b519aec3d9c1b8d0aa1e11656aab73b2726922d9",
                              "typeString": "literal_string \"log(bytes11)\""
                            },
                            "value": "log(bytes11)"
                          },
                          {
                            "id": 13732,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13725,
                            "src": "2788:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes11",
                              "typeString": "bytes11"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_04004a2e5bef8ca2e7ffd661b519aec3d9c1b8d0aa1e11656aab73b2726922d9",
                              "typeString": "literal_string \"log(bytes11)\""
                            },
                            {
                              "typeIdentifier": "t_bytes11",
                              "typeString": "bytes11"
                            }
                          ],
                          "expression": {
                            "id": 13729,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2748:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2752:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2748:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13733,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2748:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13728,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "2732:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13734,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2732:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13735,
                  "nodeType": "ExpressionStatement",
                  "src": "2732:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes11",
            "nameLocation": "2685:10:15",
            "parameters": {
              "id": 13726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13725,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2704:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13737,
                  "src": "2696:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes11",
                    "typeString": "bytes11"
                  },
                  "typeName": {
                    "id": 13724,
                    "name": "bytes11",
                    "nodeType": "ElementaryTypeName",
                    "src": "2696:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes11",
                      "typeString": "bytes11"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2695:12:15"
            },
            "returnParameters": {
              "id": 13727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2722:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13751,
            "nodeType": "FunctionDefinition",
            "src": "2805:123:15",
            "nodes": [],
            "body": {
              "id": 13750,
              "nodeType": "Block",
              "src": "2851:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313229",
                            "id": 13745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2901:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_86a06abd704b9e5bab2216d456863046355f2def5304d8276c140d0d454fddf2",
                              "typeString": "literal_string \"log(bytes12)\""
                            },
                            "value": "log(bytes12)"
                          },
                          {
                            "id": 13746,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13739,
                            "src": "2917:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes12",
                              "typeString": "bytes12"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_86a06abd704b9e5bab2216d456863046355f2def5304d8276c140d0d454fddf2",
                              "typeString": "literal_string \"log(bytes12)\""
                            },
                            {
                              "typeIdentifier": "t_bytes12",
                              "typeString": "bytes12"
                            }
                          ],
                          "expression": {
                            "id": 13743,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "2877:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "2881:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2877:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13747,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2877:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13742,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "2861:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13748,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2861:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13749,
                  "nodeType": "ExpressionStatement",
                  "src": "2861:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes12",
            "nameLocation": "2814:10:15",
            "parameters": {
              "id": 13740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13739,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2833:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13751,
                  "src": "2825:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes12",
                    "typeString": "bytes12"
                  },
                  "typeName": {
                    "id": 13738,
                    "name": "bytes12",
                    "nodeType": "ElementaryTypeName",
                    "src": "2825:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes12",
                      "typeString": "bytes12"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2824:12:15"
            },
            "returnParameters": {
              "id": 13741,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2851:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13765,
            "nodeType": "FunctionDefinition",
            "src": "2934:123:15",
            "nodes": [],
            "body": {
              "id": 13764,
              "nodeType": "Block",
              "src": "2980:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313329",
                            "id": 13759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3030:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_94529e34a43ac6de2c3a0df402eee6114eb0f2ad065baefde0230cd3cf90e2ec",
                              "typeString": "literal_string \"log(bytes13)\""
                            },
                            "value": "log(bytes13)"
                          },
                          {
                            "id": 13760,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13753,
                            "src": "3046:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes13",
                              "typeString": "bytes13"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_94529e34a43ac6de2c3a0df402eee6114eb0f2ad065baefde0230cd3cf90e2ec",
                              "typeString": "literal_string \"log(bytes13)\""
                            },
                            {
                              "typeIdentifier": "t_bytes13",
                              "typeString": "bytes13"
                            }
                          ],
                          "expression": {
                            "id": 13757,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3006:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3010:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3006:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3006:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13756,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "2990:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13762,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2990:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13763,
                  "nodeType": "ExpressionStatement",
                  "src": "2990:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes13",
            "nameLocation": "2943:10:15",
            "parameters": {
              "id": 13754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13753,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "2962:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13765,
                  "src": "2954:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes13",
                    "typeString": "bytes13"
                  },
                  "typeName": {
                    "id": 13752,
                    "name": "bytes13",
                    "nodeType": "ElementaryTypeName",
                    "src": "2954:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes13",
                      "typeString": "bytes13"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2953:12:15"
            },
            "returnParameters": {
              "id": 13755,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2980:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13779,
            "nodeType": "FunctionDefinition",
            "src": "3063:123:15",
            "nodes": [],
            "body": {
              "id": 13778,
              "nodeType": "Block",
              "src": "3109:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313429",
                            "id": 13773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3159:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9266f07faf32c88bbdb01ce418243acbc1c63e15d6e3afa16078186ba711f278",
                              "typeString": "literal_string \"log(bytes14)\""
                            },
                            "value": "log(bytes14)"
                          },
                          {
                            "id": 13774,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13767,
                            "src": "3175:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes14",
                              "typeString": "bytes14"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9266f07faf32c88bbdb01ce418243acbc1c63e15d6e3afa16078186ba711f278",
                              "typeString": "literal_string \"log(bytes14)\""
                            },
                            {
                              "typeIdentifier": "t_bytes14",
                              "typeString": "bytes14"
                            }
                          ],
                          "expression": {
                            "id": 13771,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3135:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3139:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3135:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3135:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13770,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "3119:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3119:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13777,
                  "nodeType": "ExpressionStatement",
                  "src": "3119:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes14",
            "nameLocation": "3072:10:15",
            "parameters": {
              "id": 13768,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13767,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3091:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13779,
                  "src": "3083:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes14",
                    "typeString": "bytes14"
                  },
                  "typeName": {
                    "id": 13766,
                    "name": "bytes14",
                    "nodeType": "ElementaryTypeName",
                    "src": "3083:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes14",
                      "typeString": "bytes14"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3082:12:15"
            },
            "returnParameters": {
              "id": 13769,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3109:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13793,
            "nodeType": "FunctionDefinition",
            "src": "3192:123:15",
            "nodes": [],
            "body": {
              "id": 13792,
              "nodeType": "Block",
              "src": "3238:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313529",
                            "id": 13787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3288:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_da9574e0bf3f23e09c3d85c9f5226065bb36281f2a5d78c7e38f6ffd58919606",
                              "typeString": "literal_string \"log(bytes15)\""
                            },
                            "value": "log(bytes15)"
                          },
                          {
                            "id": 13788,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13781,
                            "src": "3304:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes15",
                              "typeString": "bytes15"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_da9574e0bf3f23e09c3d85c9f5226065bb36281f2a5d78c7e38f6ffd58919606",
                              "typeString": "literal_string \"log(bytes15)\""
                            },
                            {
                              "typeIdentifier": "t_bytes15",
                              "typeString": "bytes15"
                            }
                          ],
                          "expression": {
                            "id": 13785,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3264:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3268:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3264:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13789,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3264:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13784,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "3248:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13790,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3248:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13791,
                  "nodeType": "ExpressionStatement",
                  "src": "3248:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes15",
            "nameLocation": "3201:10:15",
            "parameters": {
              "id": 13782,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13781,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3220:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13793,
                  "src": "3212:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes15",
                    "typeString": "bytes15"
                  },
                  "typeName": {
                    "id": 13780,
                    "name": "bytes15",
                    "nodeType": "ElementaryTypeName",
                    "src": "3212:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes15",
                      "typeString": "bytes15"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3211:12:15"
            },
            "returnParameters": {
              "id": 13783,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3238:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13807,
            "nodeType": "FunctionDefinition",
            "src": "3321:123:15",
            "nodes": [],
            "body": {
              "id": 13806,
              "nodeType": "Block",
              "src": "3367:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313629",
                            "id": 13801,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3417:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_665c61046af0adc4969f9d2f111b654775bd58f112b63e5ce7dfff29c000e9f3",
                              "typeString": "literal_string \"log(bytes16)\""
                            },
                            "value": "log(bytes16)"
                          },
                          {
                            "id": 13802,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13795,
                            "src": "3433:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes16",
                              "typeString": "bytes16"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_665c61046af0adc4969f9d2f111b654775bd58f112b63e5ce7dfff29c000e9f3",
                              "typeString": "literal_string \"log(bytes16)\""
                            },
                            {
                              "typeIdentifier": "t_bytes16",
                              "typeString": "bytes16"
                            }
                          ],
                          "expression": {
                            "id": 13799,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3393:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3397:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3393:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13803,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3393:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13798,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "3377:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13804,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3377:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13805,
                  "nodeType": "ExpressionStatement",
                  "src": "3377:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes16",
            "nameLocation": "3330:10:15",
            "parameters": {
              "id": 13796,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13795,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3349:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13807,
                  "src": "3341:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes16",
                    "typeString": "bytes16"
                  },
                  "typeName": {
                    "id": 13794,
                    "name": "bytes16",
                    "nodeType": "ElementaryTypeName",
                    "src": "3341:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes16",
                      "typeString": "bytes16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3340:12:15"
            },
            "returnParameters": {
              "id": 13797,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3367:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13821,
            "nodeType": "FunctionDefinition",
            "src": "3450:123:15",
            "nodes": [],
            "body": {
              "id": 13820,
              "nodeType": "Block",
              "src": "3496:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313729",
                            "id": 13815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3546:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_339f673a0c008974259a0022c9b150cc5d1af8c58584412fe373d84bd08d4ea3",
                              "typeString": "literal_string \"log(bytes17)\""
                            },
                            "value": "log(bytes17)"
                          },
                          {
                            "id": 13816,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13809,
                            "src": "3562:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes17",
                              "typeString": "bytes17"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_339f673a0c008974259a0022c9b150cc5d1af8c58584412fe373d84bd08d4ea3",
                              "typeString": "literal_string \"log(bytes17)\""
                            },
                            {
                              "typeIdentifier": "t_bytes17",
                              "typeString": "bytes17"
                            }
                          ],
                          "expression": {
                            "id": 13813,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3522:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3526:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3522:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3522:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13812,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "3506:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13818,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3506:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13819,
                  "nodeType": "ExpressionStatement",
                  "src": "3506:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes17",
            "nameLocation": "3459:10:15",
            "parameters": {
              "id": 13810,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13809,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3478:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13821,
                  "src": "3470:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes17",
                    "typeString": "bytes17"
                  },
                  "typeName": {
                    "id": 13808,
                    "name": "bytes17",
                    "nodeType": "ElementaryTypeName",
                    "src": "3470:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes17",
                      "typeString": "bytes17"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3469:12:15"
            },
            "returnParameters": {
              "id": 13811,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3496:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13835,
            "nodeType": "FunctionDefinition",
            "src": "3579:123:15",
            "nodes": [],
            "body": {
              "id": 13834,
              "nodeType": "Block",
              "src": "3625:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313829",
                            "id": 13829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3675:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c4d23d9af6458d5ddc7cb8128a2f36bf147c9db4fe277dfe0fe7be41def62116",
                              "typeString": "literal_string \"log(bytes18)\""
                            },
                            "value": "log(bytes18)"
                          },
                          {
                            "id": 13830,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13823,
                            "src": "3691:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes18",
                              "typeString": "bytes18"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c4d23d9af6458d5ddc7cb8128a2f36bf147c9db4fe277dfe0fe7be41def62116",
                              "typeString": "literal_string \"log(bytes18)\""
                            },
                            {
                              "typeIdentifier": "t_bytes18",
                              "typeString": "bytes18"
                            }
                          ],
                          "expression": {
                            "id": 13827,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3651:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3655:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3651:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3651:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13826,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "3635:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3635:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13833,
                  "nodeType": "ExpressionStatement",
                  "src": "3635:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes18",
            "nameLocation": "3588:10:15",
            "parameters": {
              "id": 13824,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13823,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3607:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13835,
                  "src": "3599:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes18",
                    "typeString": "bytes18"
                  },
                  "typeName": {
                    "id": 13822,
                    "name": "bytes18",
                    "nodeType": "ElementaryTypeName",
                    "src": "3599:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes18",
                      "typeString": "bytes18"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3598:12:15"
            },
            "returnParameters": {
              "id": 13825,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3625:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13849,
            "nodeType": "FunctionDefinition",
            "src": "3708:123:15",
            "nodes": [],
            "body": {
              "id": 13848,
              "nodeType": "Block",
              "src": "3754:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573313929",
                            "id": 13843,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3804:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e6b5a33524ca650028e2fad735b4ab50285bba37658119d2da303bee98aeada",
                              "typeString": "literal_string \"log(bytes19)\""
                            },
                            "value": "log(bytes19)"
                          },
                          {
                            "id": 13844,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13837,
                            "src": "3820:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes19",
                              "typeString": "bytes19"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5e6b5a33524ca650028e2fad735b4ab50285bba37658119d2da303bee98aeada",
                              "typeString": "literal_string \"log(bytes19)\""
                            },
                            {
                              "typeIdentifier": "t_bytes19",
                              "typeString": "bytes19"
                            }
                          ],
                          "expression": {
                            "id": 13841,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3780:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3784:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3780:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13845,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3780:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13840,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "3764:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3764:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13847,
                  "nodeType": "ExpressionStatement",
                  "src": "3764:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes19",
            "nameLocation": "3717:10:15",
            "parameters": {
              "id": 13838,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13837,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3736:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13849,
                  "src": "3728:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes19",
                    "typeString": "bytes19"
                  },
                  "typeName": {
                    "id": 13836,
                    "name": "bytes19",
                    "nodeType": "ElementaryTypeName",
                    "src": "3728:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes19",
                      "typeString": "bytes19"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3727:12:15"
            },
            "returnParameters": {
              "id": 13839,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3754:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13863,
            "nodeType": "FunctionDefinition",
            "src": "3837:123:15",
            "nodes": [],
            "body": {
              "id": 13862,
              "nodeType": "Block",
              "src": "3883:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323029",
                            "id": 13857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3933:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5188e3e9b3f117a223e2e428d0e13d089f3a53913e479000b94b85266ecf8231",
                              "typeString": "literal_string \"log(bytes20)\""
                            },
                            "value": "log(bytes20)"
                          },
                          {
                            "id": 13858,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13851,
                            "src": "3949:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5188e3e9b3f117a223e2e428d0e13d089f3a53913e479000b94b85266ecf8231",
                              "typeString": "literal_string \"log(bytes20)\""
                            },
                            {
                              "typeIdentifier": "t_bytes20",
                              "typeString": "bytes20"
                            }
                          ],
                          "expression": {
                            "id": 13855,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "3909:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "3913:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3909:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3909:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13854,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "3893:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3893:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13861,
                  "nodeType": "ExpressionStatement",
                  "src": "3893:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes20",
            "nameLocation": "3846:10:15",
            "parameters": {
              "id": 13852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13851,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3865:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13863,
                  "src": "3857:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes20",
                    "typeString": "bytes20"
                  },
                  "typeName": {
                    "id": 13850,
                    "name": "bytes20",
                    "nodeType": "ElementaryTypeName",
                    "src": "3857:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes20",
                      "typeString": "bytes20"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3856:12:15"
            },
            "returnParameters": {
              "id": 13853,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3883:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13877,
            "nodeType": "FunctionDefinition",
            "src": "3966:123:15",
            "nodes": [],
            "body": {
              "id": 13876,
              "nodeType": "Block",
              "src": "4012:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323129",
                            "id": 13871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4062:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e9da35608192a6b38ad5ef62cf738886973b011b8cdb7e81cdd51b4c3dfe8ad7",
                              "typeString": "literal_string \"log(bytes21)\""
                            },
                            "value": "log(bytes21)"
                          },
                          {
                            "id": 13872,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13865,
                            "src": "4078:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes21",
                              "typeString": "bytes21"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e9da35608192a6b38ad5ef62cf738886973b011b8cdb7e81cdd51b4c3dfe8ad7",
                              "typeString": "literal_string \"log(bytes21)\""
                            },
                            {
                              "typeIdentifier": "t_bytes21",
                              "typeString": "bytes21"
                            }
                          ],
                          "expression": {
                            "id": 13869,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4038:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4042:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4038:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4038:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13868,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "4022:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4022:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13875,
                  "nodeType": "ExpressionStatement",
                  "src": "4022:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes21",
            "nameLocation": "3975:10:15",
            "parameters": {
              "id": 13866,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13865,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "3994:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13877,
                  "src": "3986:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes21",
                    "typeString": "bytes21"
                  },
                  "typeName": {
                    "id": 13864,
                    "name": "bytes21",
                    "nodeType": "ElementaryTypeName",
                    "src": "3986:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes21",
                      "typeString": "bytes21"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3985:12:15"
            },
            "returnParameters": {
              "id": 13867,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4012:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13891,
            "nodeType": "FunctionDefinition",
            "src": "4095:123:15",
            "nodes": [],
            "body": {
              "id": 13890,
              "nodeType": "Block",
              "src": "4141:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323229",
                            "id": 13885,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4191:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d5fae89c25bed6f12b105f52db0a0ff6f5c8313613e12eccd3059bb7f7ea6575",
                              "typeString": "literal_string \"log(bytes22)\""
                            },
                            "value": "log(bytes22)"
                          },
                          {
                            "id": 13886,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13879,
                            "src": "4207:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes22",
                              "typeString": "bytes22"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d5fae89c25bed6f12b105f52db0a0ff6f5c8313613e12eccd3059bb7f7ea6575",
                              "typeString": "literal_string \"log(bytes22)\""
                            },
                            {
                              "typeIdentifier": "t_bytes22",
                              "typeString": "bytes22"
                            }
                          ],
                          "expression": {
                            "id": 13883,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4167:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4171:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4167:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4167:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13882,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "4151:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4151:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13889,
                  "nodeType": "ExpressionStatement",
                  "src": "4151:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes22",
            "nameLocation": "4104:10:15",
            "parameters": {
              "id": 13880,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13879,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4123:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13891,
                  "src": "4115:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes22",
                    "typeString": "bytes22"
                  },
                  "typeName": {
                    "id": 13878,
                    "name": "bytes22",
                    "nodeType": "ElementaryTypeName",
                    "src": "4115:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes22",
                      "typeString": "bytes22"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4114:12:15"
            },
            "returnParameters": {
              "id": 13881,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4141:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13905,
            "nodeType": "FunctionDefinition",
            "src": "4224:123:15",
            "nodes": [],
            "body": {
              "id": 13904,
              "nodeType": "Block",
              "src": "4270:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323329",
                            "id": 13899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4320:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aba1cf0dcd316c862bc06d4cf532375fed11c1e0897ba81a04ee0b22d3f14061",
                              "typeString": "literal_string \"log(bytes23)\""
                            },
                            "value": "log(bytes23)"
                          },
                          {
                            "id": 13900,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13893,
                            "src": "4336:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes23",
                              "typeString": "bytes23"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_aba1cf0dcd316c862bc06d4cf532375fed11c1e0897ba81a04ee0b22d3f14061",
                              "typeString": "literal_string \"log(bytes23)\""
                            },
                            {
                              "typeIdentifier": "t_bytes23",
                              "typeString": "bytes23"
                            }
                          ],
                          "expression": {
                            "id": 13897,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4296:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4300:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4296:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4296:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13896,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "4280:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4280:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13903,
                  "nodeType": "ExpressionStatement",
                  "src": "4280:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes23",
            "nameLocation": "4233:10:15",
            "parameters": {
              "id": 13894,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13893,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4252:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13905,
                  "src": "4244:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes23",
                    "typeString": "bytes23"
                  },
                  "typeName": {
                    "id": 13892,
                    "name": "bytes23",
                    "nodeType": "ElementaryTypeName",
                    "src": "4244:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes23",
                      "typeString": "bytes23"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4243:12:15"
            },
            "returnParameters": {
              "id": 13895,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4270:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13919,
            "nodeType": "FunctionDefinition",
            "src": "4353:123:15",
            "nodes": [],
            "body": {
              "id": 13918,
              "nodeType": "Block",
              "src": "4399:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323429",
                            "id": 13913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4449:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f1b35b3488a5452bceb48624d6ba2a791e58f0e9c0f4b86b8f51186ec7a7edf4",
                              "typeString": "literal_string \"log(bytes24)\""
                            },
                            "value": "log(bytes24)"
                          },
                          {
                            "id": 13914,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13907,
                            "src": "4465:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes24",
                              "typeString": "bytes24"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f1b35b3488a5452bceb48624d6ba2a791e58f0e9c0f4b86b8f51186ec7a7edf4",
                              "typeString": "literal_string \"log(bytes24)\""
                            },
                            {
                              "typeIdentifier": "t_bytes24",
                              "typeString": "bytes24"
                            }
                          ],
                          "expression": {
                            "id": 13911,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4425:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4429:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4425:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13915,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4425:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13910,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "4409:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4409:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13917,
                  "nodeType": "ExpressionStatement",
                  "src": "4409:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes24",
            "nameLocation": "4362:10:15",
            "parameters": {
              "id": 13908,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13907,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4381:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13919,
                  "src": "4373:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes24",
                    "typeString": "bytes24"
                  },
                  "typeName": {
                    "id": 13906,
                    "name": "bytes24",
                    "nodeType": "ElementaryTypeName",
                    "src": "4373:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes24",
                      "typeString": "bytes24"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4372:12:15"
            },
            "returnParameters": {
              "id": 13909,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4399:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13933,
            "nodeType": "FunctionDefinition",
            "src": "4482:123:15",
            "nodes": [],
            "body": {
              "id": 13932,
              "nodeType": "Block",
              "src": "4528:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323529",
                            "id": 13927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4578:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0b84bc580db9be1295ee23dff6122da1f70381c83abf9a74953cca11238eda25",
                              "typeString": "literal_string \"log(bytes25)\""
                            },
                            "value": "log(bytes25)"
                          },
                          {
                            "id": 13928,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13921,
                            "src": "4594:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes25",
                              "typeString": "bytes25"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0b84bc580db9be1295ee23dff6122da1f70381c83abf9a74953cca11238eda25",
                              "typeString": "literal_string \"log(bytes25)\""
                            },
                            {
                              "typeIdentifier": "t_bytes25",
                              "typeString": "bytes25"
                            }
                          ],
                          "expression": {
                            "id": 13925,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4554:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4558:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4554:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4554:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13924,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "4538:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4538:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13931,
                  "nodeType": "ExpressionStatement",
                  "src": "4538:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes25",
            "nameLocation": "4491:10:15",
            "parameters": {
              "id": 13922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13921,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4510:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13933,
                  "src": "4502:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes25",
                    "typeString": "bytes25"
                  },
                  "typeName": {
                    "id": 13920,
                    "name": "bytes25",
                    "nodeType": "ElementaryTypeName",
                    "src": "4502:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes25",
                      "typeString": "bytes25"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4501:12:15"
            },
            "returnParameters": {
              "id": 13923,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4528:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13947,
            "nodeType": "FunctionDefinition",
            "src": "4611:123:15",
            "nodes": [],
            "body": {
              "id": 13946,
              "nodeType": "Block",
              "src": "4657:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323629",
                            "id": 13941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4707:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f8b149f18dc341f1a56e26c6c24a5233eec3bbb2ab017e9e86e663aae743965b",
                              "typeString": "literal_string \"log(bytes26)\""
                            },
                            "value": "log(bytes26)"
                          },
                          {
                            "id": 13942,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13935,
                            "src": "4723:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes26",
                              "typeString": "bytes26"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f8b149f18dc341f1a56e26c6c24a5233eec3bbb2ab017e9e86e663aae743965b",
                              "typeString": "literal_string \"log(bytes26)\""
                            },
                            {
                              "typeIdentifier": "t_bytes26",
                              "typeString": "bytes26"
                            }
                          ],
                          "expression": {
                            "id": 13939,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4683:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4687:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4683:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4683:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13938,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "4667:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4667:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13945,
                  "nodeType": "ExpressionStatement",
                  "src": "4667:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes26",
            "nameLocation": "4620:10:15",
            "parameters": {
              "id": 13936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13935,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4639:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13947,
                  "src": "4631:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes26",
                    "typeString": "bytes26"
                  },
                  "typeName": {
                    "id": 13934,
                    "name": "bytes26",
                    "nodeType": "ElementaryTypeName",
                    "src": "4631:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes26",
                      "typeString": "bytes26"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4630:12:15"
            },
            "returnParameters": {
              "id": 13937,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4657:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13961,
            "nodeType": "FunctionDefinition",
            "src": "4740:123:15",
            "nodes": [],
            "body": {
              "id": 13960,
              "nodeType": "Block",
              "src": "4786:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323729",
                            "id": 13955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4836:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3a3757dda92e8e238aa23ff7f6f62e31074f6acccca8986ec1286b5a835236b6",
                              "typeString": "literal_string \"log(bytes27)\""
                            },
                            "value": "log(bytes27)"
                          },
                          {
                            "id": 13956,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13949,
                            "src": "4852:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes27",
                              "typeString": "bytes27"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3a3757dda92e8e238aa23ff7f6f62e31074f6acccca8986ec1286b5a835236b6",
                              "typeString": "literal_string \"log(bytes27)\""
                            },
                            {
                              "typeIdentifier": "t_bytes27",
                              "typeString": "bytes27"
                            }
                          ],
                          "expression": {
                            "id": 13953,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4812:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4816:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4812:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4812:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13952,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "4796:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4796:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13959,
                  "nodeType": "ExpressionStatement",
                  "src": "4796:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes27",
            "nameLocation": "4749:10:15",
            "parameters": {
              "id": 13950,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13949,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4768:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13961,
                  "src": "4760:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes27",
                    "typeString": "bytes27"
                  },
                  "typeName": {
                    "id": 13948,
                    "name": "bytes27",
                    "nodeType": "ElementaryTypeName",
                    "src": "4760:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes27",
                      "typeString": "bytes27"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4759:12:15"
            },
            "returnParameters": {
              "id": 13951,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4786:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13975,
            "nodeType": "FunctionDefinition",
            "src": "4869:123:15",
            "nodes": [],
            "body": {
              "id": 13974,
              "nodeType": "Block",
              "src": "4915:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323829",
                            "id": 13969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4965:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c82aeaee74a6ddec4ccd5cfe60e816752c02c70838f0908bd4a6e82866b3a042",
                              "typeString": "literal_string \"log(bytes28)\""
                            },
                            "value": "log(bytes28)"
                          },
                          {
                            "id": 13970,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13963,
                            "src": "4981:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes28",
                              "typeString": "bytes28"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c82aeaee74a6ddec4ccd5cfe60e816752c02c70838f0908bd4a6e82866b3a042",
                              "typeString": "literal_string \"log(bytes28)\""
                            },
                            {
                              "typeIdentifier": "t_bytes28",
                              "typeString": "bytes28"
                            }
                          ],
                          "expression": {
                            "id": 13967,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "4941:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "4945:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "4941:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4941:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13966,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "4925:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4925:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13973,
                  "nodeType": "ExpressionStatement",
                  "src": "4925:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes28",
            "nameLocation": "4878:10:15",
            "parameters": {
              "id": 13964,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13963,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "4897:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13975,
                  "src": "4889:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes28",
                    "typeString": "bytes28"
                  },
                  "typeName": {
                    "id": 13962,
                    "name": "bytes28",
                    "nodeType": "ElementaryTypeName",
                    "src": "4889:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes28",
                      "typeString": "bytes28"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4888:12:15"
            },
            "returnParameters": {
              "id": 13965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4915:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 13989,
            "nodeType": "FunctionDefinition",
            "src": "4998:123:15",
            "nodes": [],
            "body": {
              "id": 13988,
              "nodeType": "Block",
              "src": "5044:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573323929",
                            "id": 13983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5094:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4b69c3d5f782ef1bdb62d5bb42d4987f16799030ba447bb153d465bd3a3a5667",
                              "typeString": "literal_string \"log(bytes29)\""
                            },
                            "value": "log(bytes29)"
                          },
                          {
                            "id": 13984,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13977,
                            "src": "5110:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes29",
                              "typeString": "bytes29"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4b69c3d5f782ef1bdb62d5bb42d4987f16799030ba447bb153d465bd3a3a5667",
                              "typeString": "literal_string \"log(bytes29)\""
                            },
                            {
                              "typeIdentifier": "t_bytes29",
                              "typeString": "bytes29"
                            }
                          ],
                          "expression": {
                            "id": 13981,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5070:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5074:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5070:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13985,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5070:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13980,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "5054:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 13986,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5054:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 13987,
                  "nodeType": "ExpressionStatement",
                  "src": "5054:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes29",
            "nameLocation": "5007:10:15",
            "parameters": {
              "id": 13978,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13977,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5026:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 13989,
                  "src": "5018:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes29",
                    "typeString": "bytes29"
                  },
                  "typeName": {
                    "id": 13976,
                    "name": "bytes29",
                    "nodeType": "ElementaryTypeName",
                    "src": "5018:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes29",
                      "typeString": "bytes29"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5017:12:15"
            },
            "returnParameters": {
              "id": 13979,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5044:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14003,
            "nodeType": "FunctionDefinition",
            "src": "5127:123:15",
            "nodes": [],
            "body": {
              "id": 14002,
              "nodeType": "Block",
              "src": "5173:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573333029",
                            "id": 13997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5223:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ee12c4edbd73d98174a6bf3454562c4874f59cb381176b662ca65f625f97d6ad",
                              "typeString": "literal_string \"log(bytes30)\""
                            },
                            "value": "log(bytes30)"
                          },
                          {
                            "id": 13998,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13991,
                            "src": "5239:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes30",
                              "typeString": "bytes30"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ee12c4edbd73d98174a6bf3454562c4874f59cb381176b662ca65f625f97d6ad",
                              "typeString": "literal_string \"log(bytes30)\""
                            },
                            {
                              "typeIdentifier": "t_bytes30",
                              "typeString": "bytes30"
                            }
                          ],
                          "expression": {
                            "id": 13995,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5199:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 13996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5203:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5199:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 13999,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5199:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 13994,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "5183:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14000,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5183:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14001,
                  "nodeType": "ExpressionStatement",
                  "src": "5183:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes30",
            "nameLocation": "5136:10:15",
            "parameters": {
              "id": 13992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 13991,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5155:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14003,
                  "src": "5147:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes30",
                    "typeString": "bytes30"
                  },
                  "typeName": {
                    "id": 13990,
                    "name": "bytes30",
                    "nodeType": "ElementaryTypeName",
                    "src": "5147:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes30",
                      "typeString": "bytes30"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5146:12:15"
            },
            "returnParameters": {
              "id": 13993,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5173:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14017,
            "nodeType": "FunctionDefinition",
            "src": "5256:123:15",
            "nodes": [],
            "body": {
              "id": 14016,
              "nodeType": "Block",
              "src": "5302:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573333129",
                            "id": 14011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5352:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c2854d92a0707e582e2710f9c9d3f148fdcf7e7da3b4270c2cfa3e223a2c50ce",
                              "typeString": "literal_string \"log(bytes31)\""
                            },
                            "value": "log(bytes31)"
                          },
                          {
                            "id": 14012,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14005,
                            "src": "5368:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes31",
                              "typeString": "bytes31"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c2854d92a0707e582e2710f9c9d3f148fdcf7e7da3b4270c2cfa3e223a2c50ce",
                              "typeString": "literal_string \"log(bytes31)\""
                            },
                            {
                              "typeIdentifier": "t_bytes31",
                              "typeString": "bytes31"
                            }
                          ],
                          "expression": {
                            "id": 14009,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5328:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5332:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5328:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5328:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14008,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "5312:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14014,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5312:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14015,
                  "nodeType": "ExpressionStatement",
                  "src": "5312:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes31",
            "nameLocation": "5265:10:15",
            "parameters": {
              "id": 14006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14005,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5284:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14017,
                  "src": "5276:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes31",
                    "typeString": "bytes31"
                  },
                  "typeName": {
                    "id": 14004,
                    "name": "bytes31",
                    "nodeType": "ElementaryTypeName",
                    "src": "5276:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes31",
                      "typeString": "bytes31"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5275:12:15"
            },
            "returnParameters": {
              "id": 14007,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5302:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14031,
            "nodeType": "FunctionDefinition",
            "src": "5385:123:15",
            "nodes": [],
            "body": {
              "id": 14030,
              "nodeType": "Block",
              "src": "5431:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286279746573333229",
                            "id": 14025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5481:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_27b7cf8513ac6b65cae720183e1e60e67f8a9d92c01286c19d51d4e30aa269da",
                              "typeString": "literal_string \"log(bytes32)\""
                            },
                            "value": "log(bytes32)"
                          },
                          {
                            "id": 14026,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14019,
                            "src": "5497:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_27b7cf8513ac6b65cae720183e1e60e67f8a9d92c01286c19d51d4e30aa269da",
                              "typeString": "literal_string \"log(bytes32)\""
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "id": 14023,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5457:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5461:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5457:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5457:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14022,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "5441:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5441:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14029,
                  "nodeType": "ExpressionStatement",
                  "src": "5441:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logBytes32",
            "nameLocation": "5394:10:15",
            "parameters": {
              "id": 14020,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14019,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5413:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14031,
                  "src": "5405:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 14018,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5405:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5404:12:15"
            },
            "returnParameters": {
              "id": 14021,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5431:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14045,
            "nodeType": "FunctionDefinition",
            "src": "5514:110:15",
            "nodes": [],
            "body": {
              "id": 14044,
              "nodeType": "Block",
              "src": "5550:74:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e7429",
                            "id": 14039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5600:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f5b1bba92d8f98cf25e27c94d7fc7cbfbae95a49dfe5ab0cdf64ddd7181bb984",
                              "typeString": "literal_string \"log(uint)\""
                            },
                            "value": "log(uint)"
                          },
                          {
                            "id": 14040,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14033,
                            "src": "5613:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f5b1bba92d8f98cf25e27c94d7fc7cbfbae95a49dfe5ab0cdf64ddd7181bb984",
                              "typeString": "literal_string \"log(uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14037,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5576:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5580:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5576:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5576:40:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14036,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "5560:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5560:57:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14043,
                  "nodeType": "ExpressionStatement",
                  "src": "5560:57:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "5523:3:15",
            "parameters": {
              "id": 14034,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14033,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5532:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14045,
                  "src": "5527:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14032,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5527:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5526:9:15"
            },
            "returnParameters": {
              "id": 14035,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5550:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14059,
            "nodeType": "FunctionDefinition",
            "src": "5630:121:15",
            "nodes": [],
            "body": {
              "id": 14058,
              "nodeType": "Block",
              "src": "5675:76:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e6729",
                            "id": 14053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5725:13:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                              "typeString": "literal_string \"log(string)\""
                            },
                            "value": "log(string)"
                          },
                          {
                            "id": 14054,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14047,
                            "src": "5740:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                              "typeString": "literal_string \"log(string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14051,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5701:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5705:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5701:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5701:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14050,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "5685:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5685:59:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14057,
                  "nodeType": "ExpressionStatement",
                  "src": "5685:59:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "5639:3:15",
            "parameters": {
              "id": 14048,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14047,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5657:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14059,
                  "src": "5643:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14046,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "5643:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5642:18:15"
            },
            "returnParameters": {
              "id": 14049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5675:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14073,
            "nodeType": "FunctionDefinition",
            "src": "5757:110:15",
            "nodes": [],
            "body": {
              "id": 14072,
              "nodeType": "Block",
              "src": "5793:74:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c29",
                            "id": 14067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5843:11:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                              "typeString": "literal_string \"log(bool)\""
                            },
                            "value": "log(bool)"
                          },
                          {
                            "id": 14068,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14061,
                            "src": "5856:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                              "typeString": "literal_string \"log(bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14065,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5819:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5823:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5819:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5819:40:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14064,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "5803:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5803:57:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14071,
                  "nodeType": "ExpressionStatement",
                  "src": "5803:57:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "5766:3:15",
            "parameters": {
              "id": 14062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14061,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5775:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14073,
                  "src": "5770:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14060,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5770:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5769:9:15"
            },
            "returnParameters": {
              "id": 14063,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5793:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14087,
            "nodeType": "FunctionDefinition",
            "src": "5873:116:15",
            "nodes": [],
            "body": {
              "id": 14086,
              "nodeType": "Block",
              "src": "5912:77:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f67286164647265737329",
                            "id": 14081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5962:14:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                              "typeString": "literal_string \"log(address)\""
                            },
                            "value": "log(address)"
                          },
                          {
                            "id": 14082,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14075,
                            "src": "5978:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                              "typeString": "literal_string \"log(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14079,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5938:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5942:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "5938:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5938:43:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14078,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "5922:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14084,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5922:60:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14085,
                  "nodeType": "ExpressionStatement",
                  "src": "5922:60:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "5882:3:15",
            "parameters": {
              "id": 14076,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14075,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "5894:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14087,
                  "src": "5886:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14074,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5886:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5885:12:15"
            },
            "returnParameters": {
              "id": 14077,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5912:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14104,
            "nodeType": "FunctionDefinition",
            "src": "5995:128:15",
            "nodes": [],
            "body": {
              "id": 14103,
              "nodeType": "Block",
              "src": "6040:83:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e7429",
                            "id": 14097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6090:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6c0f69806b714804c91bc48c3b408dde7373841a86e55c9ea3ee0c5945b4bc32",
                              "typeString": "literal_string \"log(uint,uint)\""
                            },
                            "value": "log(uint,uint)"
                          },
                          {
                            "id": 14098,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14089,
                            "src": "6108:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14099,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14091,
                            "src": "6112:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6c0f69806b714804c91bc48c3b408dde7373841a86e55c9ea3ee0c5945b4bc32",
                              "typeString": "literal_string \"log(uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14095,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6066:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6070:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6066:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6066:49:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14094,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "6050:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14101,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6050:66:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14102,
                  "nodeType": "ExpressionStatement",
                  "src": "6050:66:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6004:3:15",
            "parameters": {
              "id": 14092,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14089,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6013:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14104,
                  "src": "6008:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14088,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6008:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14091,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6022:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14104,
                  "src": "6017:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14090,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6017:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6007:18:15"
            },
            "returnParameters": {
              "id": 14093,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6040:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14121,
            "nodeType": "FunctionDefinition",
            "src": "6129:139:15",
            "nodes": [],
            "body": {
              "id": 14120,
              "nodeType": "Block",
              "src": "6183:85:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e6729",
                            "id": 14114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6233:18:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0fa3f345ed69310615f27bede4ec80a963e2134dd287fa93c82b0c1eefe029a8",
                              "typeString": "literal_string \"log(uint,string)\""
                            },
                            "value": "log(uint,string)"
                          },
                          {
                            "id": 14115,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14106,
                            "src": "6253:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14116,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14108,
                            "src": "6257:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0fa3f345ed69310615f27bede4ec80a963e2134dd287fa93c82b0c1eefe029a8",
                              "typeString": "literal_string \"log(uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14112,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6209:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6213:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6209:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6209:51:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14111,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "6193:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14118,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6193:68:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14119,
                  "nodeType": "ExpressionStatement",
                  "src": "6193:68:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6138:3:15",
            "parameters": {
              "id": 14109,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14106,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6147:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14121,
                  "src": "6142:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14105,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6142:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14108,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6165:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14121,
                  "src": "6151:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14107,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6151:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6141:27:15"
            },
            "returnParameters": {
              "id": 14110,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6183:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14138,
            "nodeType": "FunctionDefinition",
            "src": "6274:128:15",
            "nodes": [],
            "body": {
              "id": 14137,
              "nodeType": "Block",
              "src": "6319:83:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c29",
                            "id": 14131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6369:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1e6dd4ecaf57d2ec6eb02f2f993c53040200a16451fba718b7e8b170825fd172",
                              "typeString": "literal_string \"log(uint,bool)\""
                            },
                            "value": "log(uint,bool)"
                          },
                          {
                            "id": 14132,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14123,
                            "src": "6387:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14133,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14125,
                            "src": "6391:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1e6dd4ecaf57d2ec6eb02f2f993c53040200a16451fba718b7e8b170825fd172",
                              "typeString": "literal_string \"log(uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14129,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6345:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6349:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6345:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14134,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6345:49:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14128,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "6329:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14135,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6329:66:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14136,
                  "nodeType": "ExpressionStatement",
                  "src": "6329:66:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6283:3:15",
            "parameters": {
              "id": 14126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14123,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6292:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14138,
                  "src": "6287:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14122,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6287:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14125,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6301:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14138,
                  "src": "6296:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14124,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6296:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6286:18:15"
            },
            "returnParameters": {
              "id": 14127,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6319:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14155,
            "nodeType": "FunctionDefinition",
            "src": "6408:134:15",
            "nodes": [],
            "body": {
              "id": 14154,
              "nodeType": "Block",
              "src": "6456:86:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c6164647265737329",
                            "id": 14148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6506:19:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_58eb860cb5df2c2db83667a7ce62ef14d1323e0f3e304ea316fb64cd2c6fd3b2",
                              "typeString": "literal_string \"log(uint,address)\""
                            },
                            "value": "log(uint,address)"
                          },
                          {
                            "id": 14149,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14140,
                            "src": "6527:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14150,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14142,
                            "src": "6531:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_58eb860cb5df2c2db83667a7ce62ef14d1323e0f3e304ea316fb64cd2c6fd3b2",
                              "typeString": "literal_string \"log(uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14146,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6482:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6486:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6482:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6482:52:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14145,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "6466:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6466:69:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14153,
                  "nodeType": "ExpressionStatement",
                  "src": "6466:69:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6417:3:15",
            "parameters": {
              "id": 14143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14140,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6426:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14155,
                  "src": "6421:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14139,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6421:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14142,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6438:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14155,
                  "src": "6430:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14141,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6430:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6420:21:15"
            },
            "returnParameters": {
              "id": 14144,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6456:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14172,
            "nodeType": "FunctionDefinition",
            "src": "6548:139:15",
            "nodes": [],
            "body": {
              "id": 14171,
              "nodeType": "Block",
              "src": "6602:85:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e7429",
                            "id": 14165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6652:18:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9710a9d00d210736b1ce918b483e56000e2885769da8118b2fbf9fe33949d3bd",
                              "typeString": "literal_string \"log(string,uint)\""
                            },
                            "value": "log(string,uint)"
                          },
                          {
                            "id": 14166,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14157,
                            "src": "6672:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14167,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14159,
                            "src": "6676:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9710a9d00d210736b1ce918b483e56000e2885769da8118b2fbf9fe33949d3bd",
                              "typeString": "literal_string \"log(string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14163,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6628:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14164,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6632:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6628:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6628:51:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14162,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "6612:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6612:68:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14170,
                  "nodeType": "ExpressionStatement",
                  "src": "6612:68:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6557:3:15",
            "parameters": {
              "id": 14160,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14157,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6575:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14172,
                  "src": "6561:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14156,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6561:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14159,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6584:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14172,
                  "src": "6579:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14158,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6579:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6560:27:15"
            },
            "returnParameters": {
              "id": 14161,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6602:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14189,
            "nodeType": "FunctionDefinition",
            "src": "6693:150:15",
            "nodes": [],
            "body": {
              "id": 14188,
              "nodeType": "Block",
              "src": "6756:87:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e6729",
                            "id": 14182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6806:20:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4b5c4277d556d03fbf5ee534fba41dc13982b44f2fa82f1d48fdd8b5b5b692ac",
                              "typeString": "literal_string \"log(string,string)\""
                            },
                            "value": "log(string,string)"
                          },
                          {
                            "id": 14183,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14174,
                            "src": "6828:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14184,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14176,
                            "src": "6832:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4b5c4277d556d03fbf5ee534fba41dc13982b44f2fa82f1d48fdd8b5b5b692ac",
                              "typeString": "literal_string \"log(string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14180,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6782:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6786:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6782:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14185,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6782:53:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14179,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "6766:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14186,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6766:70:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14187,
                  "nodeType": "ExpressionStatement",
                  "src": "6766:70:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6702:3:15",
            "parameters": {
              "id": 14177,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14174,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6720:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14189,
                  "src": "6706:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14173,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6706:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14176,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6738:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14189,
                  "src": "6724:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14175,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6724:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6705:36:15"
            },
            "returnParameters": {
              "id": 14178,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6756:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14206,
            "nodeType": "FunctionDefinition",
            "src": "6849:139:15",
            "nodes": [],
            "body": {
              "id": 14205,
              "nodeType": "Block",
              "src": "6903:85:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c29",
                            "id": 14199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6953:18:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c3b556354c088fbb43886eb83c2a04bc7089663f964d22be308197a236f5b870",
                              "typeString": "literal_string \"log(string,bool)\""
                            },
                            "value": "log(string,bool)"
                          },
                          {
                            "id": 14200,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14191,
                            "src": "6973:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14201,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14193,
                            "src": "6977:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c3b556354c088fbb43886eb83c2a04bc7089663f964d22be308197a236f5b870",
                              "typeString": "literal_string \"log(string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14197,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "6929:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "6933:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "6929:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6929:51:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14196,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "6913:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6913:68:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14204,
                  "nodeType": "ExpressionStatement",
                  "src": "6913:68:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "6858:3:15",
            "parameters": {
              "id": 14194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14191,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "6876:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14206,
                  "src": "6862:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14190,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "6862:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14193,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "6885:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14206,
                  "src": "6880:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14192,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6880:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6861:27:15"
            },
            "returnParameters": {
              "id": 14195,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6903:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14223,
            "nodeType": "FunctionDefinition",
            "src": "6994:145:15",
            "nodes": [],
            "body": {
              "id": 14222,
              "nodeType": "Block",
              "src": "7051:88:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c6164647265737329",
                            "id": 14216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7101:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72",
                              "typeString": "literal_string \"log(string,address)\""
                            },
                            "value": "log(string,address)"
                          },
                          {
                            "id": 14217,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14208,
                            "src": "7124:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14218,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14210,
                            "src": "7128:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72",
                              "typeString": "literal_string \"log(string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14214,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7077:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7081:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7077:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14219,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7077:54:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14213,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "7061:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7061:71:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14221,
                  "nodeType": "ExpressionStatement",
                  "src": "7061:71:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7003:3:15",
            "parameters": {
              "id": 14211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14208,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7021:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14223,
                  "src": "7007:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14207,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7007:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14210,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7033:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14223,
                  "src": "7025:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7025:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7006:30:15"
            },
            "returnParameters": {
              "id": 14212,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7051:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14240,
            "nodeType": "FunctionDefinition",
            "src": "7145:128:15",
            "nodes": [],
            "body": {
              "id": 14239,
              "nodeType": "Block",
              "src": "7190:83:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e7429",
                            "id": 14233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7240:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_364b6a921e139cbe48176ce2b1f6700c7e568330bc5da26f60350cc33cf2a299",
                              "typeString": "literal_string \"log(bool,uint)\""
                            },
                            "value": "log(bool,uint)"
                          },
                          {
                            "id": 14234,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14225,
                            "src": "7258:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14235,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14227,
                            "src": "7262:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_364b6a921e139cbe48176ce2b1f6700c7e568330bc5da26f60350cc33cf2a299",
                              "typeString": "literal_string \"log(bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14231,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7216:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14232,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7220:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7216:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7216:49:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14230,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "7200:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7200:66:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14238,
                  "nodeType": "ExpressionStatement",
                  "src": "7200:66:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7154:3:15",
            "parameters": {
              "id": 14228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14225,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7163:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14240,
                  "src": "7158:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14224,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7158:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14227,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7172:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14240,
                  "src": "7167:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14226,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7167:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7157:18:15"
            },
            "returnParameters": {
              "id": 14229,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7190:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14257,
            "nodeType": "FunctionDefinition",
            "src": "7279:139:15",
            "nodes": [],
            "body": {
              "id": 14256,
              "nodeType": "Block",
              "src": "7333:85:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e6729",
                            "id": 14250,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7383:18:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8feac5256a5b88d7ca0173065b796567ecbc9d75ec022fa0f044eb427f962b84",
                              "typeString": "literal_string \"log(bool,string)\""
                            },
                            "value": "log(bool,string)"
                          },
                          {
                            "id": 14251,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14242,
                            "src": "7403:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14252,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14244,
                            "src": "7407:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8feac5256a5b88d7ca0173065b796567ecbc9d75ec022fa0f044eb427f962b84",
                              "typeString": "literal_string \"log(bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14248,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7359:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7363:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7359:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14253,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7359:51:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14247,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "7343:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14254,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7343:68:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14255,
                  "nodeType": "ExpressionStatement",
                  "src": "7343:68:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7288:3:15",
            "parameters": {
              "id": 14245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14242,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7297:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14257,
                  "src": "7292:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14241,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7292:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14244,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7315:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14257,
                  "src": "7301:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14243,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7301:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7291:27:15"
            },
            "returnParameters": {
              "id": 14246,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7333:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14274,
            "nodeType": "FunctionDefinition",
            "src": "7424:128:15",
            "nodes": [],
            "body": {
              "id": 14273,
              "nodeType": "Block",
              "src": "7469:83:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c29",
                            "id": 14267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7519:16:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2a110e83227fbe26ff7524076f2091da3e9aa01d70b93677da53b41d22f4fb15",
                              "typeString": "literal_string \"log(bool,bool)\""
                            },
                            "value": "log(bool,bool)"
                          },
                          {
                            "id": 14268,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14259,
                            "src": "7537:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14269,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14261,
                            "src": "7541:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2a110e83227fbe26ff7524076f2091da3e9aa01d70b93677da53b41d22f4fb15",
                              "typeString": "literal_string \"log(bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14265,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7495:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7499:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7495:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7495:49:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14264,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "7479:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7479:66:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14272,
                  "nodeType": "ExpressionStatement",
                  "src": "7479:66:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7433:3:15",
            "parameters": {
              "id": 14262,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14259,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7442:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14274,
                  "src": "7437:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14258,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7437:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14261,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7451:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14274,
                  "src": "7446:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14260,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7446:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7436:18:15"
            },
            "returnParameters": {
              "id": 14263,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7469:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14291,
            "nodeType": "FunctionDefinition",
            "src": "7558:134:15",
            "nodes": [],
            "body": {
              "id": 14290,
              "nodeType": "Block",
              "src": "7606:86:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c6164647265737329",
                            "id": 14284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7656:19:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_853c4849443241e2249adafa4f69c8bb738b0f17c7a0a9d9997450cd71db4d55",
                              "typeString": "literal_string \"log(bool,address)\""
                            },
                            "value": "log(bool,address)"
                          },
                          {
                            "id": 14285,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14276,
                            "src": "7677:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14286,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14278,
                            "src": "7681:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_853c4849443241e2249adafa4f69c8bb738b0f17c7a0a9d9997450cd71db4d55",
                              "typeString": "literal_string \"log(bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14282,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7632:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7636:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7632:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14287,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7632:52:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14281,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "7616:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14288,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7616:69:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14289,
                  "nodeType": "ExpressionStatement",
                  "src": "7616:69:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7567:3:15",
            "parameters": {
              "id": 14279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14276,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7576:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14291,
                  "src": "7571:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14275,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7571:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14278,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7588:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14291,
                  "src": "7580:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7580:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7570:21:15"
            },
            "returnParameters": {
              "id": 14280,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7606:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14308,
            "nodeType": "FunctionDefinition",
            "src": "7698:134:15",
            "nodes": [],
            "body": {
              "id": 14307,
              "nodeType": "Block",
              "src": "7746:86:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e7429",
                            "id": 14301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7796:19:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2243cfa3a64f0f85afef83b08ba731ebd8a4b1053fdc66eb414b069452c9f133",
                              "typeString": "literal_string \"log(address,uint)\""
                            },
                            "value": "log(address,uint)"
                          },
                          {
                            "id": 14302,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14293,
                            "src": "7817:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14303,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14295,
                            "src": "7821:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2243cfa3a64f0f85afef83b08ba731ebd8a4b1053fdc66eb414b069452c9f133",
                              "typeString": "literal_string \"log(address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14299,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7772:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7776:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7772:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7772:52:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14298,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "7756:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7756:69:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14306,
                  "nodeType": "ExpressionStatement",
                  "src": "7756:69:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7707:3:15",
            "parameters": {
              "id": 14296,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14293,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7719:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14308,
                  "src": "7711:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14292,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7711:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14295,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7728:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14308,
                  "src": "7723:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14294,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "7723:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7710:21:15"
            },
            "returnParameters": {
              "id": 14297,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7746:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14325,
            "nodeType": "FunctionDefinition",
            "src": "7838:145:15",
            "nodes": [],
            "body": {
              "id": 14324,
              "nodeType": "Block",
              "src": "7895:88:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e6729",
                            "id": 14318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7945:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_759f86bbdd0758679ecefbd32ea620068b2339dddd9e45ee0fa567ee6c81f0ab",
                              "typeString": "literal_string \"log(address,string)\""
                            },
                            "value": "log(address,string)"
                          },
                          {
                            "id": 14319,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14310,
                            "src": "7968:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14320,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14312,
                            "src": "7972:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_759f86bbdd0758679ecefbd32ea620068b2339dddd9e45ee0fa567ee6c81f0ab",
                              "typeString": "literal_string \"log(address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14316,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "7921:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "7925:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "7921:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7921:54:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14315,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "7905:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7905:71:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14323,
                  "nodeType": "ExpressionStatement",
                  "src": "7905:71:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7847:3:15",
            "parameters": {
              "id": 14313,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14310,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "7859:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14325,
                  "src": "7851:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14309,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7851:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14312,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "7877:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14325,
                  "src": "7863:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14311,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7863:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7850:30:15"
            },
            "returnParameters": {
              "id": 14314,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7895:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14342,
            "nodeType": "FunctionDefinition",
            "src": "7989:134:15",
            "nodes": [],
            "body": {
              "id": 14341,
              "nodeType": "Block",
              "src": "8037:86:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c29",
                            "id": 14335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8087:19:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_75b605d31a3bf49c8d814696c7c66216d3a7e81348c450078f032e425592f72b",
                              "typeString": "literal_string \"log(address,bool)\""
                            },
                            "value": "log(address,bool)"
                          },
                          {
                            "id": 14336,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14327,
                            "src": "8108:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14337,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14329,
                            "src": "8112:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_75b605d31a3bf49c8d814696c7c66216d3a7e81348c450078f032e425592f72b",
                              "typeString": "literal_string \"log(address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14333,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8063:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8067:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8063:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8063:52:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14332,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "8047:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8047:69:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14340,
                  "nodeType": "ExpressionStatement",
                  "src": "8047:69:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "7998:3:15",
            "parameters": {
              "id": 14330,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14327,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8010:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14342,
                  "src": "8002:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14326,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8002:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14329,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8019:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14342,
                  "src": "8014:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14328,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8014:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8001:21:15"
            },
            "returnParameters": {
              "id": 14331,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8037:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14359,
            "nodeType": "FunctionDefinition",
            "src": "8129:140:15",
            "nodes": [],
            "body": {
              "id": 14358,
              "nodeType": "Block",
              "src": "8180:89:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c6164647265737329",
                            "id": 14352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8230:22:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_daf0d4aa9a5679e832ac921da67b43572b4326ee2565442d3ed255b48cfb5161",
                              "typeString": "literal_string \"log(address,address)\""
                            },
                            "value": "log(address,address)"
                          },
                          {
                            "id": 14353,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14344,
                            "src": "8254:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14354,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14346,
                            "src": "8258:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_daf0d4aa9a5679e832ac921da67b43572b4326ee2565442d3ed255b48cfb5161",
                              "typeString": "literal_string \"log(address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14350,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8206:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8210:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8206:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8206:55:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14349,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "8190:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8190:72:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14357,
                  "nodeType": "ExpressionStatement",
                  "src": "8190:72:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8138:3:15",
            "parameters": {
              "id": 14347,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14344,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8150:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14359,
                  "src": "8142:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14343,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8142:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14346,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8162:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14359,
                  "src": "8154:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14345,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8154:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8141:24:15"
            },
            "returnParameters": {
              "id": 14348,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8180:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14379,
            "nodeType": "FunctionDefinition",
            "src": "8275:146:15",
            "nodes": [],
            "body": {
              "id": 14378,
              "nodeType": "Block",
              "src": "8329:92:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c75696e7429",
                            "id": 14371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8379:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e7820a7400e33a94b0ae6f00adee99b97ebef8b77c9e38dd555c2f6b541dee17",
                              "typeString": "literal_string \"log(uint,uint,uint)\""
                            },
                            "value": "log(uint,uint,uint)"
                          },
                          {
                            "id": 14372,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14361,
                            "src": "8402:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14373,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14363,
                            "src": "8406:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14374,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14365,
                            "src": "8410:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e7820a7400e33a94b0ae6f00adee99b97ebef8b77c9e38dd555c2f6b541dee17",
                              "typeString": "literal_string \"log(uint,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14369,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8355:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8359:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8355:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8355:58:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14368,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "8339:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8339:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14377,
                  "nodeType": "ExpressionStatement",
                  "src": "8339:75:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8284:3:15",
            "parameters": {
              "id": 14366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14361,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8293:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14379,
                  "src": "8288:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14360,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8288:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14363,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8302:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14379,
                  "src": "8297:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14362,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8297:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14365,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "8311:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14379,
                  "src": "8306:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14364,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8306:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8287:27:15"
            },
            "returnParameters": {
              "id": 14367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8329:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14399,
            "nodeType": "FunctionDefinition",
            "src": "8427:157:15",
            "nodes": [],
            "body": {
              "id": 14398,
              "nodeType": "Block",
              "src": "8490:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c737472696e6729",
                            "id": 14391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8540:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7d690ee617a4217569e96b85c815115b0eee15407adaa46490ed719a45458699",
                              "typeString": "literal_string \"log(uint,uint,string)\""
                            },
                            "value": "log(uint,uint,string)"
                          },
                          {
                            "id": 14392,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14381,
                            "src": "8565:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14393,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14383,
                            "src": "8569:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14394,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14385,
                            "src": "8573:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7d690ee617a4217569e96b85c815115b0eee15407adaa46490ed719a45458699",
                              "typeString": "literal_string \"log(uint,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14389,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8516:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8520:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8516:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8516:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14388,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "8500:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8500:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14397,
                  "nodeType": "ExpressionStatement",
                  "src": "8500:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8436:3:15",
            "parameters": {
              "id": 14386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14381,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8445:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14399,
                  "src": "8440:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14380,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8440:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14383,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8454:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14399,
                  "src": "8449:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14382,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8449:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14385,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "8472:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14399,
                  "src": "8458:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14384,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8458:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8439:36:15"
            },
            "returnParameters": {
              "id": 14387,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8490:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14419,
            "nodeType": "FunctionDefinition",
            "src": "8590:146:15",
            "nodes": [],
            "body": {
              "id": 14418,
              "nodeType": "Block",
              "src": "8644:92:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c626f6f6c29",
                            "id": 14411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8694:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_67570ff704783f5d282b26317dc28aeb4fe23c085020ec6e580604c709916fa8",
                              "typeString": "literal_string \"log(uint,uint,bool)\""
                            },
                            "value": "log(uint,uint,bool)"
                          },
                          {
                            "id": 14412,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14401,
                            "src": "8717:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14413,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14403,
                            "src": "8721:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14414,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14405,
                            "src": "8725:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_67570ff704783f5d282b26317dc28aeb4fe23c085020ec6e580604c709916fa8",
                              "typeString": "literal_string \"log(uint,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14409,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8670:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8674:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8670:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8670:58:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14408,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "8654:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8654:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14417,
                  "nodeType": "ExpressionStatement",
                  "src": "8654:75:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8599:3:15",
            "parameters": {
              "id": 14406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14401,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8608:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14419,
                  "src": "8603:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14400,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8603:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14403,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8617:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14419,
                  "src": "8612:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14402,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8612:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14405,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "8626:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14419,
                  "src": "8621:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14404,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8621:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8602:27:15"
            },
            "returnParameters": {
              "id": 14407,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8644:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14439,
            "nodeType": "FunctionDefinition",
            "src": "8742:152:15",
            "nodes": [],
            "body": {
              "id": 14438,
              "nodeType": "Block",
              "src": "8799:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c6164647265737329",
                            "id": 14431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8849:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_be33491b8b53b7f3deae2959d1f4b0a22e6967a778c50f03dc188de84a207616",
                              "typeString": "literal_string \"log(uint,uint,address)\""
                            },
                            "value": "log(uint,uint,address)"
                          },
                          {
                            "id": 14432,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14421,
                            "src": "8875:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14433,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14423,
                            "src": "8879:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14434,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14425,
                            "src": "8883:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_be33491b8b53b7f3deae2959d1f4b0a22e6967a778c50f03dc188de84a207616",
                              "typeString": "literal_string \"log(uint,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14429,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8825:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8829:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8825:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14435,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8825:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14428,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "8809:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8809:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14437,
                  "nodeType": "ExpressionStatement",
                  "src": "8809:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8751:3:15",
            "parameters": {
              "id": 14426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14421,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8760:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14439,
                  "src": "8755:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14420,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8755:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14423,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8769:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14439,
                  "src": "8764:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14422,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8764:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14425,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "8781:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14439,
                  "src": "8773:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14424,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8773:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8754:30:15"
            },
            "returnParameters": {
              "id": 14427,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8799:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14459,
            "nodeType": "FunctionDefinition",
            "src": "8900:157:15",
            "nodes": [],
            "body": {
              "id": 14458,
              "nodeType": "Block",
              "src": "8963:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c75696e7429",
                            "id": 14451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9013:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5b6de83ff0d95cd44df8bb8bfd95aa0a6291cab3b8502d85b1dcfd35a64c81cd",
                              "typeString": "literal_string \"log(uint,string,uint)\""
                            },
                            "value": "log(uint,string,uint)"
                          },
                          {
                            "id": 14452,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14441,
                            "src": "9038:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14453,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14443,
                            "src": "9042:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14454,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14445,
                            "src": "9046:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5b6de83ff0d95cd44df8bb8bfd95aa0a6291cab3b8502d85b1dcfd35a64c81cd",
                              "typeString": "literal_string \"log(uint,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14449,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "8989:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "8993:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "8989:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8989:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14448,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "8973:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8973:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14457,
                  "nodeType": "ExpressionStatement",
                  "src": "8973:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "8909:3:15",
            "parameters": {
              "id": 14446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14441,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "8918:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14459,
                  "src": "8913:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14440,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8913:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14443,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "8936:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14459,
                  "src": "8922:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14442,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8922:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14445,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "8945:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14459,
                  "src": "8940:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14444,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "8940:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8912:36:15"
            },
            "returnParameters": {
              "id": 14447,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8963:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14479,
            "nodeType": "FunctionDefinition",
            "src": "9063:168:15",
            "nodes": [],
            "body": {
              "id": 14478,
              "nodeType": "Block",
              "src": "9135:96:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c737472696e6729",
                            "id": 14471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9185:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f57c295245f8891b303347a08039155dde08dde601649242724a0ce876bcc65",
                              "typeString": "literal_string \"log(uint,string,string)\""
                            },
                            "value": "log(uint,string,string)"
                          },
                          {
                            "id": 14472,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14461,
                            "src": "9212:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14473,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14463,
                            "src": "9216:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14474,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14465,
                            "src": "9220:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3f57c295245f8891b303347a08039155dde08dde601649242724a0ce876bcc65",
                              "typeString": "literal_string \"log(uint,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14469,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9161:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9165:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9161:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9161:62:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14468,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "9145:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9145:79:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14477,
                  "nodeType": "ExpressionStatement",
                  "src": "9145:79:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9072:3:15",
            "parameters": {
              "id": 14466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14461,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9081:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14479,
                  "src": "9076:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14460,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9076:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14463,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9099:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14479,
                  "src": "9085:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14462,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9085:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14465,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9117:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14479,
                  "src": "9103:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14464,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9103:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9075:45:15"
            },
            "returnParameters": {
              "id": 14467,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9135:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14499,
            "nodeType": "FunctionDefinition",
            "src": "9237:157:15",
            "nodes": [],
            "body": {
              "id": 14498,
              "nodeType": "Block",
              "src": "9300:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c626f6f6c29",
                            "id": 14491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9350:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_46a7d0ce13c2c26d158d9defa8ce488dbeb81d3c852592fb370bd45953199485",
                              "typeString": "literal_string \"log(uint,string,bool)\""
                            },
                            "value": "log(uint,string,bool)"
                          },
                          {
                            "id": 14492,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14481,
                            "src": "9375:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14493,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14483,
                            "src": "9379:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14494,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14485,
                            "src": "9383:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_46a7d0ce13c2c26d158d9defa8ce488dbeb81d3c852592fb370bd45953199485",
                              "typeString": "literal_string \"log(uint,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14489,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9326:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9330:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9326:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9326:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14488,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "9310:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9310:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14497,
                  "nodeType": "ExpressionStatement",
                  "src": "9310:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9246:3:15",
            "parameters": {
              "id": 14486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14481,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9255:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14499,
                  "src": "9250:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14480,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9250:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14483,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9273:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14499,
                  "src": "9259:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14482,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9259:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14485,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9282:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14499,
                  "src": "9277:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14484,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9277:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9249:36:15"
            },
            "returnParameters": {
              "id": 14487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9300:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14519,
            "nodeType": "FunctionDefinition",
            "src": "9400:163:15",
            "nodes": [],
            "body": {
              "id": 14518,
              "nodeType": "Block",
              "src": "9466:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c6164647265737329",
                            "id": 14511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9516:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1f90f24a472e5198a9eef41600323c8a476ef0a1db1496125f7d053a74d474ac",
                              "typeString": "literal_string \"log(uint,string,address)\""
                            },
                            "value": "log(uint,string,address)"
                          },
                          {
                            "id": 14512,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14501,
                            "src": "9544:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14513,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14503,
                            "src": "9548:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14514,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14505,
                            "src": "9552:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1f90f24a472e5198a9eef41600323c8a476ef0a1db1496125f7d053a74d474ac",
                              "typeString": "literal_string \"log(uint,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14509,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9492:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9496:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9492:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9492:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14508,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "9476:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9476:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14517,
                  "nodeType": "ExpressionStatement",
                  "src": "9476:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9409:3:15",
            "parameters": {
              "id": 14506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14501,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9418:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14519,
                  "src": "9413:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14500,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9413:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14503,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9436:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14519,
                  "src": "9422:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14502,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9422:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14505,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9448:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14519,
                  "src": "9440:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14504,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9440:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9412:39:15"
            },
            "returnParameters": {
              "id": 14507,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9466:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14539,
            "nodeType": "FunctionDefinition",
            "src": "9569:146:15",
            "nodes": [],
            "body": {
              "id": 14538,
              "nodeType": "Block",
              "src": "9623:92:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c75696e7429",
                            "id": 14531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9673:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5a4d9922ab81f1126dafac21c1ce3fb483db2e4898341fe0758315eb5f3054d6",
                              "typeString": "literal_string \"log(uint,bool,uint)\""
                            },
                            "value": "log(uint,bool,uint)"
                          },
                          {
                            "id": 14532,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14521,
                            "src": "9696:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14533,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14523,
                            "src": "9700:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14534,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14525,
                            "src": "9704:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5a4d9922ab81f1126dafac21c1ce3fb483db2e4898341fe0758315eb5f3054d6",
                              "typeString": "literal_string \"log(uint,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14529,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9649:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9653:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9649:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9649:58:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14528,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "9633:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9633:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14537,
                  "nodeType": "ExpressionStatement",
                  "src": "9633:75:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9578:3:15",
            "parameters": {
              "id": 14526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14521,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9587:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14539,
                  "src": "9582:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14520,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9582:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14523,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9596:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14539,
                  "src": "9591:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14522,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9591:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14525,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9605:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14539,
                  "src": "9600:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14524,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9600:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9581:27:15"
            },
            "returnParameters": {
              "id": 14527,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9623:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14559,
            "nodeType": "FunctionDefinition",
            "src": "9721:157:15",
            "nodes": [],
            "body": {
              "id": 14558,
              "nodeType": "Block",
              "src": "9784:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c737472696e6729",
                            "id": 14551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9834:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8b0e14fe247223cbba6a19a2fac250db70b4f126d0f3f63ac9c3f080885b9f82",
                              "typeString": "literal_string \"log(uint,bool,string)\""
                            },
                            "value": "log(uint,bool,string)"
                          },
                          {
                            "id": 14552,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14541,
                            "src": "9859:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14553,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14543,
                            "src": "9863:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14554,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14545,
                            "src": "9867:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8b0e14fe247223cbba6a19a2fac250db70b4f126d0f3f63ac9c3f080885b9f82",
                              "typeString": "literal_string \"log(uint,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14549,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9810:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9814:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9810:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9810:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14548,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "9794:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9794:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14557,
                  "nodeType": "ExpressionStatement",
                  "src": "9794:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9730:3:15",
            "parameters": {
              "id": 14546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14541,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9739:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14559,
                  "src": "9734:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14540,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9734:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14543,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9748:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14559,
                  "src": "9743:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14542,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9743:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14545,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9766:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14559,
                  "src": "9752:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14544,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9752:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9733:36:15"
            },
            "returnParameters": {
              "id": 14547,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9784:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14579,
            "nodeType": "FunctionDefinition",
            "src": "9884:146:15",
            "nodes": [],
            "body": {
              "id": 14578,
              "nodeType": "Block",
              "src": "9938:92:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c29",
                            "id": 14571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9988:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d5ceace024d24c243571d0b2393ca9fb37aa961a0e028332e72cd7dfb84c0971",
                              "typeString": "literal_string \"log(uint,bool,bool)\""
                            },
                            "value": "log(uint,bool,bool)"
                          },
                          {
                            "id": 14572,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14561,
                            "src": "10011:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14573,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14563,
                            "src": "10015:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14574,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14565,
                            "src": "10019:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d5ceace024d24c243571d0b2393ca9fb37aa961a0e028332e72cd7dfb84c0971",
                              "typeString": "literal_string \"log(uint,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14569,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "9964:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "9968:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "9964:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9964:58:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14568,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "9948:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9948:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14577,
                  "nodeType": "ExpressionStatement",
                  "src": "9948:75:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "9893:3:15",
            "parameters": {
              "id": 14566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14561,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "9902:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14579,
                  "src": "9897:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14560,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "9897:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14563,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "9911:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14579,
                  "src": "9906:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14562,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9906:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14565,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "9920:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14579,
                  "src": "9915:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14564,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9915:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9896:27:15"
            },
            "returnParameters": {
              "id": 14567,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9938:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14599,
            "nodeType": "FunctionDefinition",
            "src": "10036:152:15",
            "nodes": [],
            "body": {
              "id": 14598,
              "nodeType": "Block",
              "src": "10093:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c6164647265737329",
                            "id": 14591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10143:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_424effbf6346b3a7c79debdbad20f804c7961e0193d509136d2bb7c09c7ff9b2",
                              "typeString": "literal_string \"log(uint,bool,address)\""
                            },
                            "value": "log(uint,bool,address)"
                          },
                          {
                            "id": 14592,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14581,
                            "src": "10169:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14593,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14583,
                            "src": "10173:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14594,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14585,
                            "src": "10177:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_424effbf6346b3a7c79debdbad20f804c7961e0193d509136d2bb7c09c7ff9b2",
                              "typeString": "literal_string \"log(uint,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14589,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10119:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10123:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10119:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10119:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14588,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "10103:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10103:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14597,
                  "nodeType": "ExpressionStatement",
                  "src": "10103:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10045:3:15",
            "parameters": {
              "id": 14586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14581,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10054:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14599,
                  "src": "10049:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14580,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10049:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14583,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10063:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14599,
                  "src": "10058:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14582,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10058:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14585,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10075:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14599,
                  "src": "10067:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14584,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10067:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10048:30:15"
            },
            "returnParameters": {
              "id": 14587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10093:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14619,
            "nodeType": "FunctionDefinition",
            "src": "10194:152:15",
            "nodes": [],
            "body": {
              "id": 14618,
              "nodeType": "Block",
              "src": "10251:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c75696e7429",
                            "id": 14611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10301:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_884343aaf095a99f79852cd574543144a9a04148c5eb5687826e5e86a2554617",
                              "typeString": "literal_string \"log(uint,address,uint)\""
                            },
                            "value": "log(uint,address,uint)"
                          },
                          {
                            "id": 14612,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14601,
                            "src": "10327:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14613,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14603,
                            "src": "10331:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14614,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14605,
                            "src": "10335:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_884343aaf095a99f79852cd574543144a9a04148c5eb5687826e5e86a2554617",
                              "typeString": "literal_string \"log(uint,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14609,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10277:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10281:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10277:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10277:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14608,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "10261:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10261:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14617,
                  "nodeType": "ExpressionStatement",
                  "src": "10261:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10203:3:15",
            "parameters": {
              "id": 14606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14601,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10212:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14619,
                  "src": "10207:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14600,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10207:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14603,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10224:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14619,
                  "src": "10216:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14602,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10216:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14605,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10233:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14619,
                  "src": "10228:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14604,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10228:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10206:30:15"
            },
            "returnParameters": {
              "id": 14607,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10251:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14639,
            "nodeType": "FunctionDefinition",
            "src": "10352:163:15",
            "nodes": [],
            "body": {
              "id": 14638,
              "nodeType": "Block",
              "src": "10418:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c737472696e6729",
                            "id": 14631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10468:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ce83047b6eeeca52b57db5064e316bb4dc615477077814d1a191d68a4818cbed",
                              "typeString": "literal_string \"log(uint,address,string)\""
                            },
                            "value": "log(uint,address,string)"
                          },
                          {
                            "id": 14632,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14621,
                            "src": "10496:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14633,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14623,
                            "src": "10500:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14634,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14625,
                            "src": "10504:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ce83047b6eeeca52b57db5064e316bb4dc615477077814d1a191d68a4818cbed",
                              "typeString": "literal_string \"log(uint,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14629,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10444:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10448:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10444:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10444:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14628,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "10428:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10428:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14637,
                  "nodeType": "ExpressionStatement",
                  "src": "10428:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10361:3:15",
            "parameters": {
              "id": 14626,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14621,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10370:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14639,
                  "src": "10365:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14620,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10365:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14623,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10382:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14639,
                  "src": "10374:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14622,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10374:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14625,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10400:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14639,
                  "src": "10386:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14624,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10386:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10364:39:15"
            },
            "returnParameters": {
              "id": 14627,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10418:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14659,
            "nodeType": "FunctionDefinition",
            "src": "10521:152:15",
            "nodes": [],
            "body": {
              "id": 14658,
              "nodeType": "Block",
              "src": "10578:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c626f6f6c29",
                            "id": 14651,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10628:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7ad0128e41690364edd967a051c6d9cea9f7c322246c5ed2ebc0083265828a80",
                              "typeString": "literal_string \"log(uint,address,bool)\""
                            },
                            "value": "log(uint,address,bool)"
                          },
                          {
                            "id": 14652,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14641,
                            "src": "10654:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14653,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14643,
                            "src": "10658:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14654,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14645,
                            "src": "10662:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7ad0128e41690364edd967a051c6d9cea9f7c322246c5ed2ebc0083265828a80",
                              "typeString": "literal_string \"log(uint,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14649,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10604:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10608:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10604:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10604:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14648,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "10588:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14656,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10588:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14657,
                  "nodeType": "ExpressionStatement",
                  "src": "10588:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10530:3:15",
            "parameters": {
              "id": 14646,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14641,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10539:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14659,
                  "src": "10534:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14640,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10534:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14643,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10551:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14659,
                  "src": "10543:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14642,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10543:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14645,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10560:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14659,
                  "src": "10555:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14644,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10555:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10533:30:15"
            },
            "returnParameters": {
              "id": 14647,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10578:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14679,
            "nodeType": "FunctionDefinition",
            "src": "10679:158:15",
            "nodes": [],
            "body": {
              "id": 14678,
              "nodeType": "Block",
              "src": "10739:98:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c6164647265737329",
                            "id": 14671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10789:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7d77a61be18c592527fe1ce89d591c1badea18ef3198dacc513c5ba08449fd7b",
                              "typeString": "literal_string \"log(uint,address,address)\""
                            },
                            "value": "log(uint,address,address)"
                          },
                          {
                            "id": 14672,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14661,
                            "src": "10818:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14673,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14663,
                            "src": "10822:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14674,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14665,
                            "src": "10826:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7d77a61be18c592527fe1ce89d591c1badea18ef3198dacc513c5ba08449fd7b",
                              "typeString": "literal_string \"log(uint,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14669,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10765:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10769:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10765:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10765:64:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14668,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "10749:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14676,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10749:81:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14677,
                  "nodeType": "ExpressionStatement",
                  "src": "10749:81:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10688:3:15",
            "parameters": {
              "id": 14666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14661,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10697:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14679,
                  "src": "10692:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14660,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10692:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14663,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10709:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14679,
                  "src": "10701:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14662,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10701:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14665,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10721:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14679,
                  "src": "10713:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10713:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10691:33:15"
            },
            "returnParameters": {
              "id": 14667,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10739:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14699,
            "nodeType": "FunctionDefinition",
            "src": "10843:157:15",
            "nodes": [],
            "body": {
              "id": 14698,
              "nodeType": "Block",
              "src": "10906:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c75696e7429",
                            "id": 14691,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10956:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_969cdd03749f5aa30c7fce9178272cdca616cb2cc28128d3b9824be8046f827e",
                              "typeString": "literal_string \"log(string,uint,uint)\""
                            },
                            "value": "log(string,uint,uint)"
                          },
                          {
                            "id": 14692,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14681,
                            "src": "10981:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14693,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14683,
                            "src": "10985:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14694,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14685,
                            "src": "10989:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_969cdd03749f5aa30c7fce9178272cdca616cb2cc28128d3b9824be8046f827e",
                              "typeString": "literal_string \"log(string,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14689,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "10932:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14690,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "10936:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "10932:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10932:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14688,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "10916:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10916:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14697,
                  "nodeType": "ExpressionStatement",
                  "src": "10916:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "10852:3:15",
            "parameters": {
              "id": 14686,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14681,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "10870:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14699,
                  "src": "10856:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14680,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10856:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14683,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "10879:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14699,
                  "src": "10874:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14682,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10874:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14685,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "10888:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14699,
                  "src": "10883:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14684,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "10883:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10855:36:15"
            },
            "returnParameters": {
              "id": 14687,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10906:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14719,
            "nodeType": "FunctionDefinition",
            "src": "11006:168:15",
            "nodes": [],
            "body": {
              "id": 14718,
              "nodeType": "Block",
              "src": "11078:96:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c737472696e6729",
                            "id": 14711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11128:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a3f5c739d439f7a3912e960230088fb752539d00203d48771c643a12b26892ec",
                              "typeString": "literal_string \"log(string,uint,string)\""
                            },
                            "value": "log(string,uint,string)"
                          },
                          {
                            "id": 14712,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14701,
                            "src": "11155:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14713,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14703,
                            "src": "11159:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14714,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14705,
                            "src": "11163:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a3f5c739d439f7a3912e960230088fb752539d00203d48771c643a12b26892ec",
                              "typeString": "literal_string \"log(string,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14709,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11104:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11108:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11104:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14715,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11104:62:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14708,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "11088:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11088:79:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14717,
                  "nodeType": "ExpressionStatement",
                  "src": "11088:79:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11015:3:15",
            "parameters": {
              "id": 14706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14701,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11033:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14719,
                  "src": "11019:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14700,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11019:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14703,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11042:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14719,
                  "src": "11037:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14702,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11037:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14705,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11060:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14719,
                  "src": "11046:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14704,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11046:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11018:45:15"
            },
            "returnParameters": {
              "id": 14707,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11078:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14739,
            "nodeType": "FunctionDefinition",
            "src": "11180:157:15",
            "nodes": [],
            "body": {
              "id": 14738,
              "nodeType": "Block",
              "src": "11243:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c29",
                            "id": 14731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11293:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f102ee05f3b79d3bc2ba0350401e35479d9f95705fb40abfaeb49d12355695b3",
                              "typeString": "literal_string \"log(string,uint,bool)\""
                            },
                            "value": "log(string,uint,bool)"
                          },
                          {
                            "id": 14732,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14721,
                            "src": "11318:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14733,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14723,
                            "src": "11322:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14734,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14725,
                            "src": "11326:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f102ee05f3b79d3bc2ba0350401e35479d9f95705fb40abfaeb49d12355695b3",
                              "typeString": "literal_string \"log(string,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14729,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11269:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11273:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11269:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14735,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11269:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14728,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "11253:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14736,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11253:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14737,
                  "nodeType": "ExpressionStatement",
                  "src": "11253:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11189:3:15",
            "parameters": {
              "id": 14726,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14721,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11207:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14739,
                  "src": "11193:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14720,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11193:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14723,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11216:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14739,
                  "src": "11211:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14722,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11211:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14725,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11225:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14739,
                  "src": "11220:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14724,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11220:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11192:36:15"
            },
            "returnParameters": {
              "id": 14727,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11243:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14759,
            "nodeType": "FunctionDefinition",
            "src": "11343:163:15",
            "nodes": [],
            "body": {
              "id": 14758,
              "nodeType": "Block",
              "src": "11409:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c6164647265737329",
                            "id": 14751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11459:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e3849f79a3c07bea1bae0837bfeee5da2531684b262865f1541a60df4fcd512a",
                              "typeString": "literal_string \"log(string,uint,address)\""
                            },
                            "value": "log(string,uint,address)"
                          },
                          {
                            "id": 14752,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14741,
                            "src": "11487:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14753,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14743,
                            "src": "11491:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 14754,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14745,
                            "src": "11495:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e3849f79a3c07bea1bae0837bfeee5da2531684b262865f1541a60df4fcd512a",
                              "typeString": "literal_string \"log(string,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14749,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11435:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11439:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11435:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11435:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14748,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "11419:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14756,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11419:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14757,
                  "nodeType": "ExpressionStatement",
                  "src": "11419:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11352:3:15",
            "parameters": {
              "id": 14746,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14741,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11370:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14759,
                  "src": "11356:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14740,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11356:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14743,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11379:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14759,
                  "src": "11374:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14742,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11374:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14745,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11391:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14759,
                  "src": "11383:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14744,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11383:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11355:39:15"
            },
            "returnParameters": {
              "id": 14747,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11409:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14779,
            "nodeType": "FunctionDefinition",
            "src": "11512:168:15",
            "nodes": [],
            "body": {
              "id": 14778,
              "nodeType": "Block",
              "src": "11584:96:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e7429",
                            "id": 14771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11634:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f362ca59af8dc58335601f00e8a4f3f8cd0c03c9716c1459118a41613b5e0147",
                              "typeString": "literal_string \"log(string,string,uint)\""
                            },
                            "value": "log(string,string,uint)"
                          },
                          {
                            "id": 14772,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14761,
                            "src": "11661:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14773,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14763,
                            "src": "11665:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14774,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14765,
                            "src": "11669:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f362ca59af8dc58335601f00e8a4f3f8cd0c03c9716c1459118a41613b5e0147",
                              "typeString": "literal_string \"log(string,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14769,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11610:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11614:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11610:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11610:62:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14768,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "11594:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11594:79:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14777,
                  "nodeType": "ExpressionStatement",
                  "src": "11594:79:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11521:3:15",
            "parameters": {
              "id": 14766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14761,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11539:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14779,
                  "src": "11525:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14760,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11525:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14763,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11557:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14779,
                  "src": "11543:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14762,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11543:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14765,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11566:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14779,
                  "src": "11561:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14764,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11561:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11524:45:15"
            },
            "returnParameters": {
              "id": 14767,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11584:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14799,
            "nodeType": "FunctionDefinition",
            "src": "11686:179:15",
            "nodes": [],
            "body": {
              "id": 14798,
              "nodeType": "Block",
              "src": "11767:98:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e6729",
                            "id": 14791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11817:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2ced7cef693312206c21f0e92e3b54e2e16bf33db5eec350c78866822c665e1f",
                              "typeString": "literal_string \"log(string,string,string)\""
                            },
                            "value": "log(string,string,string)"
                          },
                          {
                            "id": 14792,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14781,
                            "src": "11846:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14793,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14783,
                            "src": "11850:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14794,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14785,
                            "src": "11854:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2ced7cef693312206c21f0e92e3b54e2e16bf33db5eec350c78866822c665e1f",
                              "typeString": "literal_string \"log(string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14789,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11793:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11797:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11793:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14795,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11793:64:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14788,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "11777:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11777:81:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14797,
                  "nodeType": "ExpressionStatement",
                  "src": "11777:81:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11695:3:15",
            "parameters": {
              "id": 14786,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14781,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11713:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14799,
                  "src": "11699:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14780,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11699:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14783,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11731:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14799,
                  "src": "11717:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14782,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11717:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14785,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11749:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14799,
                  "src": "11735:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14784,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11735:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11698:54:15"
            },
            "returnParameters": {
              "id": 14787,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11767:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14819,
            "nodeType": "FunctionDefinition",
            "src": "11871:168:15",
            "nodes": [],
            "body": {
              "id": 14818,
              "nodeType": "Block",
              "src": "11943:96:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c29",
                            "id": 14811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11993:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b0e0f9b5ad960213f9ab262d120ce4ec3edffc58d1ad51b99628a777e82d8acb",
                              "typeString": "literal_string \"log(string,string,bool)\""
                            },
                            "value": "log(string,string,bool)"
                          },
                          {
                            "id": 14812,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14801,
                            "src": "12020:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14813,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14803,
                            "src": "12024:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14814,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14805,
                            "src": "12028:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b0e0f9b5ad960213f9ab262d120ce4ec3edffc58d1ad51b99628a777e82d8acb",
                              "typeString": "literal_string \"log(string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14809,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "11969:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "11973:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "11969:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11969:62:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14808,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "11953:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14816,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11953:79:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14817,
                  "nodeType": "ExpressionStatement",
                  "src": "11953:79:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "11880:3:15",
            "parameters": {
              "id": 14806,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14801,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "11898:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14819,
                  "src": "11884:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14800,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11884:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14803,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "11916:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14819,
                  "src": "11902:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14802,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "11902:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14805,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "11925:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14819,
                  "src": "11920:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14804,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11920:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11883:45:15"
            },
            "returnParameters": {
              "id": 14807,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11943:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14839,
            "nodeType": "FunctionDefinition",
            "src": "12045:174:15",
            "nodes": [],
            "body": {
              "id": 14838,
              "nodeType": "Block",
              "src": "12120:99:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c6164647265737329",
                            "id": 14831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12170:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_95ed0195ee22a092ad93d352c33e8dc78b91f0c01eab9cff270af55b2ae65768",
                              "typeString": "literal_string \"log(string,string,address)\""
                            },
                            "value": "log(string,string,address)"
                          },
                          {
                            "id": 14832,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14821,
                            "src": "12200:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14833,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14823,
                            "src": "12204:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14834,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14825,
                            "src": "12208:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_95ed0195ee22a092ad93d352c33e8dc78b91f0c01eab9cff270af55b2ae65768",
                              "typeString": "literal_string \"log(string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14829,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12146:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12150:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12146:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14835,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12146:65:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14828,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "12130:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14836,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12130:82:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14837,
                  "nodeType": "ExpressionStatement",
                  "src": "12130:82:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12054:3:15",
            "parameters": {
              "id": 14826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14821,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12072:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14839,
                  "src": "12058:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14820,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12058:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14823,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12090:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14839,
                  "src": "12076:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14822,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12076:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14825,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12102:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14839,
                  "src": "12094:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14824,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12094:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12057:48:15"
            },
            "returnParameters": {
              "id": 14827,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12120:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14859,
            "nodeType": "FunctionDefinition",
            "src": "12225:157:15",
            "nodes": [],
            "body": {
              "id": 14858,
              "nodeType": "Block",
              "src": "12288:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e7429",
                            "id": 14851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12338:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_291bb9d00defdc1b95c66c8b4bc10ef714a549c4f22fb190fe687dc5e85a4db1",
                              "typeString": "literal_string \"log(string,bool,uint)\""
                            },
                            "value": "log(string,bool,uint)"
                          },
                          {
                            "id": 14852,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14841,
                            "src": "12363:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14853,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14843,
                            "src": "12367:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14854,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14845,
                            "src": "12371:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_291bb9d00defdc1b95c66c8b4bc10ef714a549c4f22fb190fe687dc5e85a4db1",
                              "typeString": "literal_string \"log(string,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14849,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12314:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12318:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12314:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14855,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12314:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14848,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "12298:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12298:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14857,
                  "nodeType": "ExpressionStatement",
                  "src": "12298:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12234:3:15",
            "parameters": {
              "id": 14846,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14841,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12252:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14859,
                  "src": "12238:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14840,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12238:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14843,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12261:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14859,
                  "src": "12256:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14842,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12256:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14845,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12270:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14859,
                  "src": "12265:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14844,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12265:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12237:36:15"
            },
            "returnParameters": {
              "id": 14847,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12288:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14879,
            "nodeType": "FunctionDefinition",
            "src": "12388:168:15",
            "nodes": [],
            "body": {
              "id": 14878,
              "nodeType": "Block",
              "src": "12460:96:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e6729",
                            "id": 14871,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12510:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e298f47d872a89293d316b9b936000a26f83eda2ba3171b2f9f16e2bf618c3e7",
                              "typeString": "literal_string \"log(string,bool,string)\""
                            },
                            "value": "log(string,bool,string)"
                          },
                          {
                            "id": 14872,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14861,
                            "src": "12537:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14873,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14863,
                            "src": "12541:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14874,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14865,
                            "src": "12545:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e298f47d872a89293d316b9b936000a26f83eda2ba3171b2f9f16e2bf618c3e7",
                              "typeString": "literal_string \"log(string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14869,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12486:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12490:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12486:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14875,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12486:62:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14868,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "12470:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14876,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12470:79:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14877,
                  "nodeType": "ExpressionStatement",
                  "src": "12470:79:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12397:3:15",
            "parameters": {
              "id": 14866,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14861,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12415:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14879,
                  "src": "12401:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14860,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12401:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14863,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12424:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14879,
                  "src": "12419:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14862,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12419:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14865,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12442:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14879,
                  "src": "12428:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14864,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12428:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12400:45:15"
            },
            "returnParameters": {
              "id": 14867,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12460:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14899,
            "nodeType": "FunctionDefinition",
            "src": "12562:157:15",
            "nodes": [],
            "body": {
              "id": 14898,
              "nodeType": "Block",
              "src": "12625:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c29",
                            "id": 14891,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12675:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_850b7ad637241a873b861925ccffb71aaffb030b1df8850f324c9804bc7b443d",
                              "typeString": "literal_string \"log(string,bool,bool)\""
                            },
                            "value": "log(string,bool,bool)"
                          },
                          {
                            "id": 14892,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14881,
                            "src": "12700:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14893,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14883,
                            "src": "12704:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14894,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14885,
                            "src": "12708:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_850b7ad637241a873b861925ccffb71aaffb030b1df8850f324c9804bc7b443d",
                              "typeString": "literal_string \"log(string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14889,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12651:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12655:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12651:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12651:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14888,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "12635:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14896,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12635:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14897,
                  "nodeType": "ExpressionStatement",
                  "src": "12635:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12571:3:15",
            "parameters": {
              "id": 14886,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14881,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12589:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14899,
                  "src": "12575:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14880,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12575:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14883,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12598:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14899,
                  "src": "12593:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14882,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12593:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14885,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12607:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14899,
                  "src": "12602:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14884,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12602:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12574:36:15"
            },
            "returnParameters": {
              "id": 14887,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12625:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14919,
            "nodeType": "FunctionDefinition",
            "src": "12725:163:15",
            "nodes": [],
            "body": {
              "id": 14918,
              "nodeType": "Block",
              "src": "12791:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c6164647265737329",
                            "id": 14911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12841:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_932bbb385d479707ff387e3bb2d8968a7b4115e938510c531aa15b50507fc27f",
                              "typeString": "literal_string \"log(string,bool,address)\""
                            },
                            "value": "log(string,bool,address)"
                          },
                          {
                            "id": 14912,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14901,
                            "src": "12869:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14913,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14903,
                            "src": "12873:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 14914,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14905,
                            "src": "12877:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_932bbb385d479707ff387e3bb2d8968a7b4115e938510c531aa15b50507fc27f",
                              "typeString": "literal_string \"log(string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14909,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12817:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12821:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12817:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14915,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12817:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14908,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "12801:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12801:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14917,
                  "nodeType": "ExpressionStatement",
                  "src": "12801:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12734:3:15",
            "parameters": {
              "id": 14906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14901,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12752:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14919,
                  "src": "12738:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14900,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12738:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14903,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12761:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14919,
                  "src": "12756:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14902,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12756:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14905,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12773:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14919,
                  "src": "12765:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14904,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12765:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12737:39:15"
            },
            "returnParameters": {
              "id": 14907,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12791:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14939,
            "nodeType": "FunctionDefinition",
            "src": "12894:163:15",
            "nodes": [],
            "body": {
              "id": 14938,
              "nodeType": "Block",
              "src": "12960:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e7429",
                            "id": 14931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13010:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_07c81217b9c48682941345dce61bbd916a12dd883642c9077891090a71c93a13",
                              "typeString": "literal_string \"log(string,address,uint)\""
                            },
                            "value": "log(string,address,uint)"
                          },
                          {
                            "id": 14932,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14921,
                            "src": "13038:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14933,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14923,
                            "src": "13042:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14934,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14925,
                            "src": "13046:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_07c81217b9c48682941345dce61bbd916a12dd883642c9077891090a71c93a13",
                              "typeString": "literal_string \"log(string,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 14929,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "12986:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "12990:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "12986:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12986:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14928,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "12970:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12970:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14937,
                  "nodeType": "ExpressionStatement",
                  "src": "12970:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "12903:3:15",
            "parameters": {
              "id": 14926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14921,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "12921:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14939,
                  "src": "12907:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14920,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "12907:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14923,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "12933:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14939,
                  "src": "12925:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14922,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12925:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14925,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "12942:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14939,
                  "src": "12937:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14924,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "12937:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12906:39:15"
            },
            "returnParameters": {
              "id": 14927,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12960:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14959,
            "nodeType": "FunctionDefinition",
            "src": "13063:174:15",
            "nodes": [],
            "body": {
              "id": 14958,
              "nodeType": "Block",
              "src": "13138:99:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e6729",
                            "id": 14951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13188:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e0e9ad4f87059a51cce5555e129ca819f7e5d52e9c65a4e175882207ee47d634",
                              "typeString": "literal_string \"log(string,address,string)\""
                            },
                            "value": "log(string,address,string)"
                          },
                          {
                            "id": 14952,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14941,
                            "src": "13218:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14953,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14943,
                            "src": "13222:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14954,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14945,
                            "src": "13226:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e0e9ad4f87059a51cce5555e129ca819f7e5d52e9c65a4e175882207ee47d634",
                              "typeString": "literal_string \"log(string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 14949,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13164:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13168:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13164:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14955,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13164:65:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14948,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "13148:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14956,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13148:82:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14957,
                  "nodeType": "ExpressionStatement",
                  "src": "13148:82:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13072:3:15",
            "parameters": {
              "id": 14946,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14941,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13090:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14959,
                  "src": "13076:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14940,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13076:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14943,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13102:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14959,
                  "src": "13094:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14942,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13094:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14945,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13120:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14959,
                  "src": "13106:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14944,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13106:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13075:48:15"
            },
            "returnParameters": {
              "id": 14947,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13138:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14979,
            "nodeType": "FunctionDefinition",
            "src": "13243:163:15",
            "nodes": [],
            "body": {
              "id": 14978,
              "nodeType": "Block",
              "src": "13309:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c29",
                            "id": 14971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13359:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c91d5ed4480e0b3323f998bcee9594aa98173c7324b015a4713a7c8429afd0b8",
                              "typeString": "literal_string \"log(string,address,bool)\""
                            },
                            "value": "log(string,address,bool)"
                          },
                          {
                            "id": 14972,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14961,
                            "src": "13387:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14973,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14963,
                            "src": "13391:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14974,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14965,
                            "src": "13395:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c91d5ed4480e0b3323f998bcee9594aa98173c7324b015a4713a7c8429afd0b8",
                              "typeString": "literal_string \"log(string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 14969,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13335:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13339:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13335:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13335:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14968,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "13319:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14976,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13319:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14977,
                  "nodeType": "ExpressionStatement",
                  "src": "13319:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13252:3:15",
            "parameters": {
              "id": 14966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14961,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13270:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14979,
                  "src": "13256:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14960,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13256:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14963,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13282:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14979,
                  "src": "13274:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14962,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13274:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14965,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13291:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14979,
                  "src": "13286:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14964,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13286:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13255:39:15"
            },
            "returnParameters": {
              "id": 14967,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13309:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 14999,
            "nodeType": "FunctionDefinition",
            "src": "13412:169:15",
            "nodes": [],
            "body": {
              "id": 14998,
              "nodeType": "Block",
              "src": "13481:100:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c6164647265737329",
                            "id": 14991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13531:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fcec75e0902c9d61eded5d9f2eed16d5b0f2cd255fe6fa77733f59e1063823e8",
                              "typeString": "literal_string \"log(string,address,address)\""
                            },
                            "value": "log(string,address,address)"
                          },
                          {
                            "id": 14992,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14981,
                            "src": "13562:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 14993,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14983,
                            "src": "13566:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 14994,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14985,
                            "src": "13570:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fcec75e0902c9d61eded5d9f2eed16d5b0f2cd255fe6fa77733f59e1063823e8",
                              "typeString": "literal_string \"log(string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 14989,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13507:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 14990,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13511:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13507:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 14995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13507:66:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 14988,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "13491:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 14996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13491:83:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 14997,
                  "nodeType": "ExpressionStatement",
                  "src": "13491:83:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13421:3:15",
            "parameters": {
              "id": 14986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14981,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13439:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14999,
                  "src": "13425:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14980,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13425:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14983,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13451:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14999,
                  "src": "13443:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14982,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13443:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14985,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13463:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 14999,
                  "src": "13455:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14984,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13455:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13424:42:15"
            },
            "returnParameters": {
              "id": 14987,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13481:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15019,
            "nodeType": "FunctionDefinition",
            "src": "13587:146:15",
            "nodes": [],
            "body": {
              "id": 15018,
              "nodeType": "Block",
              "src": "13641:92:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c75696e7429",
                            "id": 15011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13691:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3b5c03e061c862e366b964ce1ef4845511d610b73a90137eb2b2afa3099b1a4e",
                              "typeString": "literal_string \"log(bool,uint,uint)\""
                            },
                            "value": "log(bool,uint,uint)"
                          },
                          {
                            "id": 15012,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15001,
                            "src": "13714:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15013,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15003,
                            "src": "13718:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15014,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15005,
                            "src": "13722:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3b5c03e061c862e366b964ce1ef4845511d610b73a90137eb2b2afa3099b1a4e",
                              "typeString": "literal_string \"log(bool,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15009,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13667:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13671:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13667:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13667:58:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15008,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "13651:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13651:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15017,
                  "nodeType": "ExpressionStatement",
                  "src": "13651:75:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13596:3:15",
            "parameters": {
              "id": 15006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15001,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13605:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15019,
                  "src": "13600:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15000,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13600:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15003,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13614:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15019,
                  "src": "13609:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15002,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "13609:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15005,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13623:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15019,
                  "src": "13618:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15004,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "13618:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13599:27:15"
            },
            "returnParameters": {
              "id": 15007,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13641:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15039,
            "nodeType": "FunctionDefinition",
            "src": "13739:157:15",
            "nodes": [],
            "body": {
              "id": 15038,
              "nodeType": "Block",
              "src": "13802:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e6729",
                            "id": 15031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13852:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c8397eb0de34bc3ec2853d625c1649c0c0abb20941c30ba650cc738adade018f",
                              "typeString": "literal_string \"log(bool,uint,string)\""
                            },
                            "value": "log(bool,uint,string)"
                          },
                          {
                            "id": 15032,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15021,
                            "src": "13877:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15033,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15023,
                            "src": "13881:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15034,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15025,
                            "src": "13885:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c8397eb0de34bc3ec2853d625c1649c0c0abb20941c30ba650cc738adade018f",
                              "typeString": "literal_string \"log(bool,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15029,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13828:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13832:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13828:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13828:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15028,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "13812:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13812:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15037,
                  "nodeType": "ExpressionStatement",
                  "src": "13812:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13748:3:15",
            "parameters": {
              "id": 15026,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15021,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13757:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15039,
                  "src": "13752:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15020,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13752:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15023,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13766:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15039,
                  "src": "13761:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15022,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "13761:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15025,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13784:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15039,
                  "src": "13770:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15024,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "13770:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13751:36:15"
            },
            "returnParameters": {
              "id": 15027,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13802:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15059,
            "nodeType": "FunctionDefinition",
            "src": "13902:146:15",
            "nodes": [],
            "body": {
              "id": 15058,
              "nodeType": "Block",
              "src": "13956:92:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c29",
                            "id": 15051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14006:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1badc9eb6813ec769c33a3918f278565b7e2e9ed34d2ae2d50d951cc0f602ae0",
                              "typeString": "literal_string \"log(bool,uint,bool)\""
                            },
                            "value": "log(bool,uint,bool)"
                          },
                          {
                            "id": 15052,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15041,
                            "src": "14029:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15053,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15043,
                            "src": "14033:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15054,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15045,
                            "src": "14037:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1badc9eb6813ec769c33a3918f278565b7e2e9ed34d2ae2d50d951cc0f602ae0",
                              "typeString": "literal_string \"log(bool,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15049,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "13982:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "13986:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "13982:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13982:58:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15048,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "13966:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13966:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15057,
                  "nodeType": "ExpressionStatement",
                  "src": "13966:75:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "13911:3:15",
            "parameters": {
              "id": 15046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15041,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "13920:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15059,
                  "src": "13915:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15040,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13915:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15043,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "13929:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15059,
                  "src": "13924:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15042,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "13924:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15045,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "13938:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15059,
                  "src": "13933:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15044,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "13933:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13914:27:15"
            },
            "returnParameters": {
              "id": 15047,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13956:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15079,
            "nodeType": "FunctionDefinition",
            "src": "14054:152:15",
            "nodes": [],
            "body": {
              "id": 15078,
              "nodeType": "Block",
              "src": "14111:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c6164647265737329",
                            "id": 15071,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14161:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c4d23507f52009aec241457bf26dc51305bd2896aa08c5b47f04709554b39440",
                              "typeString": "literal_string \"log(bool,uint,address)\""
                            },
                            "value": "log(bool,uint,address)"
                          },
                          {
                            "id": 15072,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15061,
                            "src": "14187:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15073,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15063,
                            "src": "14191:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15074,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15065,
                            "src": "14195:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c4d23507f52009aec241457bf26dc51305bd2896aa08c5b47f04709554b39440",
                              "typeString": "literal_string \"log(bool,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15069,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14137:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15070,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14141:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14137:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14137:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15068,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "14121:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14121:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15077,
                  "nodeType": "ExpressionStatement",
                  "src": "14121:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14063:3:15",
            "parameters": {
              "id": 15066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15061,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14072:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15079,
                  "src": "14067:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15060,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14067:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15063,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14081:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15079,
                  "src": "14076:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15062,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "14076:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15065,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14093:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15079,
                  "src": "14085:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15064,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14085:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14066:30:15"
            },
            "returnParameters": {
              "id": 15067,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14111:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15099,
            "nodeType": "FunctionDefinition",
            "src": "14212:157:15",
            "nodes": [],
            "body": {
              "id": 15098,
              "nodeType": "Block",
              "src": "14275:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e7429",
                            "id": 15091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14325:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c0382aac3e9b237c9c8f246cdb8152d44351aaafa72d99e3640be65f754ac807",
                              "typeString": "literal_string \"log(bool,string,uint)\""
                            },
                            "value": "log(bool,string,uint)"
                          },
                          {
                            "id": 15092,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15081,
                            "src": "14350:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15093,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15083,
                            "src": "14354:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15094,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15085,
                            "src": "14358:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c0382aac3e9b237c9c8f246cdb8152d44351aaafa72d99e3640be65f754ac807",
                              "typeString": "literal_string \"log(bool,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15089,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14301:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14305:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14301:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14301:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15088,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "14285:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14285:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15097,
                  "nodeType": "ExpressionStatement",
                  "src": "14285:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14221:3:15",
            "parameters": {
              "id": 15086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15081,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14230:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15099,
                  "src": "14225:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15080,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14225:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15083,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14248:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15099,
                  "src": "14234:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15082,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14234:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15085,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14257:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15099,
                  "src": "14252:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15084,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "14252:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14224:36:15"
            },
            "returnParameters": {
              "id": 15087,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14275:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15119,
            "nodeType": "FunctionDefinition",
            "src": "14375:168:15",
            "nodes": [],
            "body": {
              "id": 15118,
              "nodeType": "Block",
              "src": "14447:96:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e6729",
                            "id": 15111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14497:25:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b076847f8b4aee0cfbf46ec501532f9f3c85a581aff135287ff8e917c0a39102",
                              "typeString": "literal_string \"log(bool,string,string)\""
                            },
                            "value": "log(bool,string,string)"
                          },
                          {
                            "id": 15112,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15101,
                            "src": "14524:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15113,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15103,
                            "src": "14528:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15114,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15105,
                            "src": "14532:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b076847f8b4aee0cfbf46ec501532f9f3c85a581aff135287ff8e917c0a39102",
                              "typeString": "literal_string \"log(bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15109,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14473:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14477:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14473:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15115,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14473:62:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15108,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "14457:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15116,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14457:79:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15117,
                  "nodeType": "ExpressionStatement",
                  "src": "14457:79:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14384:3:15",
            "parameters": {
              "id": 15106,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15101,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14393:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15119,
                  "src": "14388:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15100,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14388:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15103,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14411:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15119,
                  "src": "14397:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15102,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14397:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15105,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14429:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15119,
                  "src": "14415:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15104,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14415:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14387:45:15"
            },
            "returnParameters": {
              "id": 15107,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14447:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15139,
            "nodeType": "FunctionDefinition",
            "src": "14549:157:15",
            "nodes": [],
            "body": {
              "id": 15138,
              "nodeType": "Block",
              "src": "14612:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c29",
                            "id": 15131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14662:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dbb4c2477dacc98e0e5b96fd6ca6bf0ae1f82dd042439d9f53f8d963bef43eaa",
                              "typeString": "literal_string \"log(bool,string,bool)\""
                            },
                            "value": "log(bool,string,bool)"
                          },
                          {
                            "id": 15132,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15121,
                            "src": "14687:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15133,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15123,
                            "src": "14691:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15134,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15125,
                            "src": "14695:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dbb4c2477dacc98e0e5b96fd6ca6bf0ae1f82dd042439d9f53f8d963bef43eaa",
                              "typeString": "literal_string \"log(bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15129,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14638:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14642:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14638:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15135,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14638:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15128,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "14622:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14622:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15137,
                  "nodeType": "ExpressionStatement",
                  "src": "14622:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14558:3:15",
            "parameters": {
              "id": 15126,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15121,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14567:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15139,
                  "src": "14562:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15120,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14562:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15123,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14585:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15139,
                  "src": "14571:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15122,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14571:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15125,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14594:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15139,
                  "src": "14589:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15124,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14589:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14561:36:15"
            },
            "returnParameters": {
              "id": 15127,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14612:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15159,
            "nodeType": "FunctionDefinition",
            "src": "14712:163:15",
            "nodes": [],
            "body": {
              "id": 15158,
              "nodeType": "Block",
              "src": "14778:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c6164647265737329",
                            "id": 15151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14828:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9591b953c9b1d0af9d1e3bc0f6ea9aa5b0e1af8c702f85b36e21b9b2d7e4da79",
                              "typeString": "literal_string \"log(bool,string,address)\""
                            },
                            "value": "log(bool,string,address)"
                          },
                          {
                            "id": 15152,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15141,
                            "src": "14856:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15153,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15143,
                            "src": "14860:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15154,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15145,
                            "src": "14864:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9591b953c9b1d0af9d1e3bc0f6ea9aa5b0e1af8c702f85b36e21b9b2d7e4da79",
                              "typeString": "literal_string \"log(bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15149,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14804:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14808:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14804:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14804:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15148,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "14788:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14788:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15157,
                  "nodeType": "ExpressionStatement",
                  "src": "14788:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14721:3:15",
            "parameters": {
              "id": 15146,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15141,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14730:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15159,
                  "src": "14725:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15140,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14725:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15143,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14748:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15159,
                  "src": "14734:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15142,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "14734:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15145,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14760:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15159,
                  "src": "14752:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15144,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14752:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14724:39:15"
            },
            "returnParameters": {
              "id": 15147,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14778:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15179,
            "nodeType": "FunctionDefinition",
            "src": "14881:146:15",
            "nodes": [],
            "body": {
              "id": 15178,
              "nodeType": "Block",
              "src": "14935:92:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e7429",
                            "id": 15171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14985:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b01365bbae43503e22260bcc9cf23ffef37ffc9f6c1580737fe2489955065877",
                              "typeString": "literal_string \"log(bool,bool,uint)\""
                            },
                            "value": "log(bool,bool,uint)"
                          },
                          {
                            "id": 15172,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15161,
                            "src": "15008:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15173,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15163,
                            "src": "15012:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15174,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15165,
                            "src": "15016:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b01365bbae43503e22260bcc9cf23ffef37ffc9f6c1580737fe2489955065877",
                              "typeString": "literal_string \"log(bool,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15169,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "14961:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "14965:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "14961:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15175,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14961:58:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15168,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "14945:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "14945:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15177,
                  "nodeType": "ExpressionStatement",
                  "src": "14945:75:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "14890:3:15",
            "parameters": {
              "id": 15166,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15161,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "14899:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15179,
                  "src": "14894:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15160,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14894:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15163,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "14908:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15179,
                  "src": "14903:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15162,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "14903:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15165,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "14917:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15179,
                  "src": "14912:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15164,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "14912:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14893:27:15"
            },
            "returnParameters": {
              "id": 15167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14935:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15199,
            "nodeType": "FunctionDefinition",
            "src": "15033:157:15",
            "nodes": [],
            "body": {
              "id": 15198,
              "nodeType": "Block",
              "src": "15096:94:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 15191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15146:23:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2555fa465662416fc443b21c515f245dc550a66f7c658773f7bd7ad91c82f2cc",
                              "typeString": "literal_string \"log(bool,bool,string)\""
                            },
                            "value": "log(bool,bool,string)"
                          },
                          {
                            "id": 15192,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15181,
                            "src": "15171:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15193,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15183,
                            "src": "15175:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15194,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15185,
                            "src": "15179:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2555fa465662416fc443b21c515f245dc550a66f7c658773f7bd7ad91c82f2cc",
                              "typeString": "literal_string \"log(bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15189,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15122:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15126:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15122:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15195,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15122:60:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15188,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "15106:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15106:77:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15197,
                  "nodeType": "ExpressionStatement",
                  "src": "15106:77:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15042:3:15",
            "parameters": {
              "id": 15186,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15181,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15051:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15199,
                  "src": "15046:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15180,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15046:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15183,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15060:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15199,
                  "src": "15055:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15182,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15055:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15185,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15078:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15199,
                  "src": "15064:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15184,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15064:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15045:36:15"
            },
            "returnParameters": {
              "id": 15187,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15096:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15219,
            "nodeType": "FunctionDefinition",
            "src": "15196:146:15",
            "nodes": [],
            "body": {
              "id": 15218,
              "nodeType": "Block",
              "src": "15250:92:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 15211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15300:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_50709698278bb02f656e4ac53a2ae8ef0ec4064d340360a5fa4d933e9a742590",
                              "typeString": "literal_string \"log(bool,bool,bool)\""
                            },
                            "value": "log(bool,bool,bool)"
                          },
                          {
                            "id": 15212,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15201,
                            "src": "15323:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15213,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15203,
                            "src": "15327:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15214,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15205,
                            "src": "15331:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_50709698278bb02f656e4ac53a2ae8ef0ec4064d340360a5fa4d933e9a742590",
                              "typeString": "literal_string \"log(bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15209,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15276:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15280:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15276:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15276:58:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15208,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "15260:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15216,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15260:75:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15217,
                  "nodeType": "ExpressionStatement",
                  "src": "15260:75:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15205:3:15",
            "parameters": {
              "id": 15206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15201,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15214:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15219,
                  "src": "15209:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15200,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15209:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15203,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15223:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15219,
                  "src": "15218:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15202,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15218:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15205,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15232:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15219,
                  "src": "15227:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15204,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15227:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15208:27:15"
            },
            "returnParameters": {
              "id": 15207,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15250:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15239,
            "nodeType": "FunctionDefinition",
            "src": "15348:152:15",
            "nodes": [],
            "body": {
              "id": 15238,
              "nodeType": "Block",
              "src": "15405:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 15231,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15455:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1078f68da6ddbbe80f829fe8d54d1f2c6347e1ee4ec5a2a7a3a330ada9eccf81",
                              "typeString": "literal_string \"log(bool,bool,address)\""
                            },
                            "value": "log(bool,bool,address)"
                          },
                          {
                            "id": 15232,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15221,
                            "src": "15481:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15233,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15223,
                            "src": "15485:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15234,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15225,
                            "src": "15489:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1078f68da6ddbbe80f829fe8d54d1f2c6347e1ee4ec5a2a7a3a330ada9eccf81",
                              "typeString": "literal_string \"log(bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15229,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15431:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15435:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15431:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15431:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15228,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "15415:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15415:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15237,
                  "nodeType": "ExpressionStatement",
                  "src": "15415:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15357:3:15",
            "parameters": {
              "id": 15226,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15221,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15366:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15239,
                  "src": "15361:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15220,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15361:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15223,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15375:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15239,
                  "src": "15370:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15222,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15370:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15225,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15387:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15239,
                  "src": "15379:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15224,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15379:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15360:30:15"
            },
            "returnParameters": {
              "id": 15227,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15405:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15259,
            "nodeType": "FunctionDefinition",
            "src": "15506:152:15",
            "nodes": [],
            "body": {
              "id": 15258,
              "nodeType": "Block",
              "src": "15563:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e7429",
                            "id": 15251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15613:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb704bafbd89369a907d48394b6acdacf482ae42cc2aaedd1cc37e89b4054b3d",
                              "typeString": "literal_string \"log(bool,address,uint)\""
                            },
                            "value": "log(bool,address,uint)"
                          },
                          {
                            "id": 15252,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15241,
                            "src": "15639:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15253,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15243,
                            "src": "15643:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15254,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15245,
                            "src": "15647:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_eb704bafbd89369a907d48394b6acdacf482ae42cc2aaedd1cc37e89b4054b3d",
                              "typeString": "literal_string \"log(bool,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15249,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15589:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15593:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15589:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15589:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15248,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "15573:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15573:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15257,
                  "nodeType": "ExpressionStatement",
                  "src": "15573:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15515:3:15",
            "parameters": {
              "id": 15246,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15241,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15524:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15259,
                  "src": "15519:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15240,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15519:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15243,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15536:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15259,
                  "src": "15528:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15242,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15528:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15245,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15545:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15259,
                  "src": "15540:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15244,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "15540:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15518:30:15"
            },
            "returnParameters": {
              "id": 15247,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15563:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15279,
            "nodeType": "FunctionDefinition",
            "src": "15664:163:15",
            "nodes": [],
            "body": {
              "id": 15278,
              "nodeType": "Block",
              "src": "15730:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e6729",
                            "id": 15271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15780:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_de9a927090b15ed84eefc0c471675a23ce67fd75011b1652fe17ca2dd0dcd06d",
                              "typeString": "literal_string \"log(bool,address,string)\""
                            },
                            "value": "log(bool,address,string)"
                          },
                          {
                            "id": 15272,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15261,
                            "src": "15808:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15273,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15263,
                            "src": "15812:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15274,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15265,
                            "src": "15816:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_de9a927090b15ed84eefc0c471675a23ce67fd75011b1652fe17ca2dd0dcd06d",
                              "typeString": "literal_string \"log(bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15269,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15756:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15760:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15756:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15756:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15268,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "15740:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15740:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15277,
                  "nodeType": "ExpressionStatement",
                  "src": "15740:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15673:3:15",
            "parameters": {
              "id": 15266,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15261,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15682:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15279,
                  "src": "15677:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15260,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15677:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15263,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15694:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15279,
                  "src": "15686:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15262,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15686:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15265,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15712:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15279,
                  "src": "15698:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15264,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15698:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15676:39:15"
            },
            "returnParameters": {
              "id": 15267,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15730:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15299,
            "nodeType": "FunctionDefinition",
            "src": "15833:152:15",
            "nodes": [],
            "body": {
              "id": 15298,
              "nodeType": "Block",
              "src": "15890:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c29",
                            "id": 15291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15940:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_18c9c746c9d0e38e4dc234ee76e678bbaa4e473eca3dce0969637d7f01e4a908",
                              "typeString": "literal_string \"log(bool,address,bool)\""
                            },
                            "value": "log(bool,address,bool)"
                          },
                          {
                            "id": 15292,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15281,
                            "src": "15966:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15293,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15283,
                            "src": "15970:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15294,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15285,
                            "src": "15974:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_18c9c746c9d0e38e4dc234ee76e678bbaa4e473eca3dce0969637d7f01e4a908",
                              "typeString": "literal_string \"log(bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15289,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15916:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "15920:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "15916:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15916:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15288,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "15900:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15900:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15297,
                  "nodeType": "ExpressionStatement",
                  "src": "15900:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "15842:3:15",
            "parameters": {
              "id": 15286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15281,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "15851:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15299,
                  "src": "15846:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15280,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15846:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15283,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "15863:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15299,
                  "src": "15855:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15282,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "15855:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15285,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "15872:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15299,
                  "src": "15867:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15284,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "15867:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15845:30:15"
            },
            "returnParameters": {
              "id": 15287,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "15890:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15319,
            "nodeType": "FunctionDefinition",
            "src": "15991:158:15",
            "nodes": [],
            "body": {
              "id": 15318,
              "nodeType": "Block",
              "src": "16051:98:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c6164647265737329",
                            "id": 15311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16101:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d2763667477f08a6a3f8ce84e1cc1aeb5e67ee2996f5f36e8939da2b8b8f0265",
                              "typeString": "literal_string \"log(bool,address,address)\""
                            },
                            "value": "log(bool,address,address)"
                          },
                          {
                            "id": 15312,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15301,
                            "src": "16130:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15313,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15303,
                            "src": "16134:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15314,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15305,
                            "src": "16138:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d2763667477f08a6a3f8ce84e1cc1aeb5e67ee2996f5f36e8939da2b8b8f0265",
                              "typeString": "literal_string \"log(bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15309,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16077:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16081:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16077:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16077:64:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15308,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "16061:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16061:81:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15317,
                  "nodeType": "ExpressionStatement",
                  "src": "16061:81:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16000:3:15",
            "parameters": {
              "id": 15306,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15301,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16009:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15319,
                  "src": "16004:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15300,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16004:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15303,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16021:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15319,
                  "src": "16013:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15302,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16013:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15305,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16033:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15319,
                  "src": "16025:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15304,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16025:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16003:33:15"
            },
            "returnParameters": {
              "id": 15307,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16051:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15339,
            "nodeType": "FunctionDefinition",
            "src": "16155:152:15",
            "nodes": [],
            "body": {
              "id": 15338,
              "nodeType": "Block",
              "src": "16212:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c75696e7429",
                            "id": 15331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16262:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8786135eae1a8e4736031518026bd3bd30886c3cc8d3e8bdedd6faea426de5ea",
                              "typeString": "literal_string \"log(address,uint,uint)\""
                            },
                            "value": "log(address,uint,uint)"
                          },
                          {
                            "id": 15332,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15321,
                            "src": "16288:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15333,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15323,
                            "src": "16292:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15334,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15325,
                            "src": "16296:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8786135eae1a8e4736031518026bd3bd30886c3cc8d3e8bdedd6faea426de5ea",
                              "typeString": "literal_string \"log(address,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15329,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16238:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15330,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16242:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16238:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16238:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15328,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "16222:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16222:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15337,
                  "nodeType": "ExpressionStatement",
                  "src": "16222:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16164:3:15",
            "parameters": {
              "id": 15326,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15321,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16176:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15339,
                  "src": "16168:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15320,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16168:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15323,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16185:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15339,
                  "src": "16180:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15322,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16180:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15325,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16194:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15339,
                  "src": "16189:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15324,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16189:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16167:30:15"
            },
            "returnParameters": {
              "id": 15327,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16212:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15359,
            "nodeType": "FunctionDefinition",
            "src": "16313:163:15",
            "nodes": [],
            "body": {
              "id": 15358,
              "nodeType": "Block",
              "src": "16379:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c737472696e6729",
                            "id": 15351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16429:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_baf968498a2094de432bd16841b992056c14db9f313a6b44c3156c2b5f1dc2b4",
                              "typeString": "literal_string \"log(address,uint,string)\""
                            },
                            "value": "log(address,uint,string)"
                          },
                          {
                            "id": 15352,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15341,
                            "src": "16457:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15353,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15343,
                            "src": "16461:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15354,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15345,
                            "src": "16465:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_baf968498a2094de432bd16841b992056c14db9f313a6b44c3156c2b5f1dc2b4",
                              "typeString": "literal_string \"log(address,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15349,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16405:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16409:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16405:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16405:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15348,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "16389:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16389:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15357,
                  "nodeType": "ExpressionStatement",
                  "src": "16389:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16322:3:15",
            "parameters": {
              "id": 15346,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15341,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16334:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15359,
                  "src": "16326:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15340,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16326:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15343,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16343:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15359,
                  "src": "16338:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15342,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16338:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15345,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16361:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15359,
                  "src": "16347:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15344,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "16347:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16325:39:15"
            },
            "returnParameters": {
              "id": 15347,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16379:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15379,
            "nodeType": "FunctionDefinition",
            "src": "16482:152:15",
            "nodes": [],
            "body": {
              "id": 15378,
              "nodeType": "Block",
              "src": "16539:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c29",
                            "id": 15371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16589:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e54ae1445cd51f09e801fc5885e33c709102997417d3d9b6f543f7724468b4e4",
                              "typeString": "literal_string \"log(address,uint,bool)\""
                            },
                            "value": "log(address,uint,bool)"
                          },
                          {
                            "id": 15372,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15361,
                            "src": "16615:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15373,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15363,
                            "src": "16619:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15374,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15365,
                            "src": "16623:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e54ae1445cd51f09e801fc5885e33c709102997417d3d9b6f543f7724468b4e4",
                              "typeString": "literal_string \"log(address,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15369,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16565:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16569:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16565:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15375,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16565:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15368,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "16549:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16549:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15377,
                  "nodeType": "ExpressionStatement",
                  "src": "16549:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16491:3:15",
            "parameters": {
              "id": 15366,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15361,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16503:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15379,
                  "src": "16495:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15360,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16495:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15363,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16512:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15379,
                  "src": "16507:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15362,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16507:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15365,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16521:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15379,
                  "src": "16516:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15364,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16516:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16494:30:15"
            },
            "returnParameters": {
              "id": 15367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16539:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15399,
            "nodeType": "FunctionDefinition",
            "src": "16640:158:15",
            "nodes": [],
            "body": {
              "id": 15398,
              "nodeType": "Block",
              "src": "16700:98:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c6164647265737329",
                            "id": 15391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16750:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_97eca3948a309251ff02cc4a3cb96f84ac4b6b4bdc56e86c9f0131c9b70c6259",
                              "typeString": "literal_string \"log(address,uint,address)\""
                            },
                            "value": "log(address,uint,address)"
                          },
                          {
                            "id": 15392,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15381,
                            "src": "16779:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15393,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15383,
                            "src": "16783:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15394,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15385,
                            "src": "16787:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_97eca3948a309251ff02cc4a3cb96f84ac4b6b4bdc56e86c9f0131c9b70c6259",
                              "typeString": "literal_string \"log(address,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15389,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16726:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16730:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16726:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16726:64:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15388,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "16710:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16710:81:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15397,
                  "nodeType": "ExpressionStatement",
                  "src": "16710:81:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16649:3:15",
            "parameters": {
              "id": 15386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15381,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16661:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15399,
                  "src": "16653:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15380,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16653:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15383,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16670:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15399,
                  "src": "16665:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15382,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16665:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15385,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16682:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15399,
                  "src": "16674:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15384,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16674:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16652:33:15"
            },
            "returnParameters": {
              "id": 15387,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16700:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15419,
            "nodeType": "FunctionDefinition",
            "src": "16804:163:15",
            "nodes": [],
            "body": {
              "id": 15418,
              "nodeType": "Block",
              "src": "16870:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e7429",
                            "id": 15411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16920:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1cdaf28a630ff01c83e1629295cea6793da60638603e831a5c07be53dbee3597",
                              "typeString": "literal_string \"log(address,string,uint)\""
                            },
                            "value": "log(address,string,uint)"
                          },
                          {
                            "id": 15412,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15401,
                            "src": "16948:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15413,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15403,
                            "src": "16952:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15414,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15405,
                            "src": "16956:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1cdaf28a630ff01c83e1629295cea6793da60638603e831a5c07be53dbee3597",
                              "typeString": "literal_string \"log(address,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15409,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "16896:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "16900:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "16896:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16896:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15408,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "16880:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "16880:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15417,
                  "nodeType": "ExpressionStatement",
                  "src": "16880:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16813:3:15",
            "parameters": {
              "id": 15406,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15401,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16825:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15419,
                  "src": "16817:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15400,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16817:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15403,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "16843:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15419,
                  "src": "16829:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15402,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "16829:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15405,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "16852:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15419,
                  "src": "16847:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15404,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "16847:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16816:39:15"
            },
            "returnParameters": {
              "id": 15407,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "16870:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15439,
            "nodeType": "FunctionDefinition",
            "src": "16973:174:15",
            "nodes": [],
            "body": {
              "id": 15438,
              "nodeType": "Block",
              "src": "17048:99:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e6729",
                            "id": 15431,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17098:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fb77226597c11cd0c52945168d7176a06b9af41edea6a51823db111f35573158",
                              "typeString": "literal_string \"log(address,string,string)\""
                            },
                            "value": "log(address,string,string)"
                          },
                          {
                            "id": 15432,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15421,
                            "src": "17128:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15433,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15423,
                            "src": "17132:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15434,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15425,
                            "src": "17136:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fb77226597c11cd0c52945168d7176a06b9af41edea6a51823db111f35573158",
                              "typeString": "literal_string \"log(address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15429,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17074:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17078:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17074:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15435,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17074:65:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15428,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "17058:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17058:82:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15437,
                  "nodeType": "ExpressionStatement",
                  "src": "17058:82:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "16982:3:15",
            "parameters": {
              "id": 15426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15421,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "16994:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15439,
                  "src": "16986:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15420,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "16986:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15423,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17012:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15439,
                  "src": "16998:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15422,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "16998:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15425,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17030:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15439,
                  "src": "17016:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15424,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17016:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16985:48:15"
            },
            "returnParameters": {
              "id": 15427,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17048:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15459,
            "nodeType": "FunctionDefinition",
            "src": "17153:163:15",
            "nodes": [],
            "body": {
              "id": 15458,
              "nodeType": "Block",
              "src": "17219:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c29",
                            "id": 15451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17269:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cf020fb14f49566c5748de1f455c699a10a4ed1d7cf32f9adb28d22878df1b96",
                              "typeString": "literal_string \"log(address,string,bool)\""
                            },
                            "value": "log(address,string,bool)"
                          },
                          {
                            "id": 15452,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15441,
                            "src": "17297:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15453,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15443,
                            "src": "17301:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15454,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15445,
                            "src": "17305:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cf020fb14f49566c5748de1f455c699a10a4ed1d7cf32f9adb28d22878df1b96",
                              "typeString": "literal_string \"log(address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15449,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17245:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17249:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17245:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17245:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15448,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "17229:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15456,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17229:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15457,
                  "nodeType": "ExpressionStatement",
                  "src": "17229:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17162:3:15",
            "parameters": {
              "id": 15446,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15441,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17174:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15459,
                  "src": "17166:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15440,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17166:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15443,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17192:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15459,
                  "src": "17178:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15442,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17178:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15445,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17201:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15459,
                  "src": "17196:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15444,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17196:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17165:39:15"
            },
            "returnParameters": {
              "id": 15447,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17219:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15479,
            "nodeType": "FunctionDefinition",
            "src": "17322:169:15",
            "nodes": [],
            "body": {
              "id": 15478,
              "nodeType": "Block",
              "src": "17391:100:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c6164647265737329",
                            "id": 15471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17441:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f08744e82875525f1ef885a48453f58e96cac98a5d32bd6d8c38e4977aede231",
                              "typeString": "literal_string \"log(address,string,address)\""
                            },
                            "value": "log(address,string,address)"
                          },
                          {
                            "id": 15472,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15461,
                            "src": "17472:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15473,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15463,
                            "src": "17476:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15474,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15465,
                            "src": "17480:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f08744e82875525f1ef885a48453f58e96cac98a5d32bd6d8c38e4977aede231",
                              "typeString": "literal_string \"log(address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15469,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17417:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17421:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17417:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17417:66:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15468,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "17401:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17401:83:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15477,
                  "nodeType": "ExpressionStatement",
                  "src": "17401:83:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17331:3:15",
            "parameters": {
              "id": 15466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15461,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17343:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15479,
                  "src": "17335:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15460,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17335:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15463,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17361:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15479,
                  "src": "17347:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15462,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17347:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15465,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17373:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15479,
                  "src": "17365:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15464,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17365:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17334:42:15"
            },
            "returnParameters": {
              "id": 15467,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17391:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15499,
            "nodeType": "FunctionDefinition",
            "src": "17497:152:15",
            "nodes": [],
            "body": {
              "id": 15498,
              "nodeType": "Block",
              "src": "17554:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e7429",
                            "id": 15491,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17604:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c468d157d9cb3bd4f3bc977d201b067de313f8e774b0377d5c5b2b5c9426095",
                              "typeString": "literal_string \"log(address,bool,uint)\""
                            },
                            "value": "log(address,bool,uint)"
                          },
                          {
                            "id": 15492,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15481,
                            "src": "17630:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15493,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15483,
                            "src": "17634:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15494,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15485,
                            "src": "17638:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c468d157d9cb3bd4f3bc977d201b067de313f8e774b0377d5c5b2b5c9426095",
                              "typeString": "literal_string \"log(address,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15489,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17580:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17584:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17580:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15495,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17580:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15488,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "17564:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15496,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17564:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15497,
                  "nodeType": "ExpressionStatement",
                  "src": "17564:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17506:3:15",
            "parameters": {
              "id": 15486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15481,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17518:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15499,
                  "src": "17510:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15480,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17510:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15483,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17527:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15499,
                  "src": "17522:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15482,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17522:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15485,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17536:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15499,
                  "src": "17531:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15484,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "17531:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17509:30:15"
            },
            "returnParameters": {
              "id": 15487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17554:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15519,
            "nodeType": "FunctionDefinition",
            "src": "17655:163:15",
            "nodes": [],
            "body": {
              "id": 15518,
              "nodeType": "Block",
              "src": "17721:97:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e6729",
                            "id": 15511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17771:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_212255cc5ff4a2d867f69451c60f51c24e41784276f4ceffe8ec3af322690750",
                              "typeString": "literal_string \"log(address,bool,string)\""
                            },
                            "value": "log(address,bool,string)"
                          },
                          {
                            "id": 15512,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15501,
                            "src": "17799:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15513,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15503,
                            "src": "17803:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15514,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15505,
                            "src": "17807:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_212255cc5ff4a2d867f69451c60f51c24e41784276f4ceffe8ec3af322690750",
                              "typeString": "literal_string \"log(address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15509,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17747:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17751:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17747:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17747:63:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15508,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "17731:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17731:80:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15517,
                  "nodeType": "ExpressionStatement",
                  "src": "17731:80:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17664:3:15",
            "parameters": {
              "id": 15506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15501,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17676:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15519,
                  "src": "17668:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15500,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17668:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15503,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17685:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15519,
                  "src": "17680:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15502,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17680:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15505,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17703:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15519,
                  "src": "17689:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15504,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "17689:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17667:39:15"
            },
            "returnParameters": {
              "id": 15507,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17721:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15539,
            "nodeType": "FunctionDefinition",
            "src": "17824:152:15",
            "nodes": [],
            "body": {
              "id": 15538,
              "nodeType": "Block",
              "src": "17881:95:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c29",
                            "id": 15531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17931:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb830c92a079b46f3abcb83e519f578cffe7387941b6885067265feec096d279",
                              "typeString": "literal_string \"log(address,bool,bool)\""
                            },
                            "value": "log(address,bool,bool)"
                          },
                          {
                            "id": 15532,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15521,
                            "src": "17957:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15533,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15523,
                            "src": "17961:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15534,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15525,
                            "src": "17965:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_eb830c92a079b46f3abcb83e519f578cffe7387941b6885067265feec096d279",
                              "typeString": "literal_string \"log(address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15529,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "17907:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "17911:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "17907:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15535,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17907:61:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15528,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "17891:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15536,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "17891:78:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15537,
                  "nodeType": "ExpressionStatement",
                  "src": "17891:78:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17833:3:15",
            "parameters": {
              "id": 15526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15521,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "17845:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15539,
                  "src": "17837:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15520,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17837:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15523,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "17854:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15539,
                  "src": "17849:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15522,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17849:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15525,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "17863:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15539,
                  "src": "17858:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15524,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "17858:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17836:30:15"
            },
            "returnParameters": {
              "id": 15527,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17881:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15559,
            "nodeType": "FunctionDefinition",
            "src": "17982:158:15",
            "nodes": [],
            "body": {
              "id": 15558,
              "nodeType": "Block",
              "src": "18042:98:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c6164647265737329",
                            "id": 15551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18092:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f11699ed537119f000a51ba9fbd5bb55b3990a1a718acbe99659bd1bc84dc18d",
                              "typeString": "literal_string \"log(address,bool,address)\""
                            },
                            "value": "log(address,bool,address)"
                          },
                          {
                            "id": 15552,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15541,
                            "src": "18121:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15553,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15543,
                            "src": "18125:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15554,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15545,
                            "src": "18129:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f11699ed537119f000a51ba9fbd5bb55b3990a1a718acbe99659bd1bc84dc18d",
                              "typeString": "literal_string \"log(address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15549,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18068:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18072:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18068:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18068:64:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15548,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "18052:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18052:81:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15557,
                  "nodeType": "ExpressionStatement",
                  "src": "18052:81:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "17991:3:15",
            "parameters": {
              "id": 15546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15541,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18003:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15559,
                  "src": "17995:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15540,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "17995:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15543,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18012:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15559,
                  "src": "18007:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15542,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18007:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15545,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18024:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15559,
                  "src": "18016:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15544,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18016:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17994:33:15"
            },
            "returnParameters": {
              "id": 15547,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18042:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15579,
            "nodeType": "FunctionDefinition",
            "src": "18146:158:15",
            "nodes": [],
            "body": {
              "id": 15578,
              "nodeType": "Block",
              "src": "18206:98:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e7429",
                            "id": 15571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18256:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6c366d7295b93bbfacc4df0ea28f0eef60efacfffd447f8f2823cbe5b2fedb07",
                              "typeString": "literal_string \"log(address,address,uint)\""
                            },
                            "value": "log(address,address,uint)"
                          },
                          {
                            "id": 15572,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15561,
                            "src": "18285:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15573,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15563,
                            "src": "18289:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15574,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15565,
                            "src": "18293:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6c366d7295b93bbfacc4df0ea28f0eef60efacfffd447f8f2823cbe5b2fedb07",
                              "typeString": "literal_string \"log(address,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15569,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18232:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18236:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18232:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18232:64:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15568,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "18216:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15576,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18216:81:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15577,
                  "nodeType": "ExpressionStatement",
                  "src": "18216:81:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18155:3:15",
            "parameters": {
              "id": 15566,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15561,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18167:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15579,
                  "src": "18159:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15560,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18159:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15563,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18179:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15579,
                  "src": "18171:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18171:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15565,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18188:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15579,
                  "src": "18183:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15564,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18183:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18158:33:15"
            },
            "returnParameters": {
              "id": 15567,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18206:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15599,
            "nodeType": "FunctionDefinition",
            "src": "18310:169:15",
            "nodes": [],
            "body": {
              "id": 15598,
              "nodeType": "Block",
              "src": "18379:100:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e6729",
                            "id": 15591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18429:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_007150be50a4671a6be318012e9cd2eabb1e1bc8869b45c34abbaa04d81c8eee",
                              "typeString": "literal_string \"log(address,address,string)\""
                            },
                            "value": "log(address,address,string)"
                          },
                          {
                            "id": 15592,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15581,
                            "src": "18460:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15593,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15583,
                            "src": "18464:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15594,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15585,
                            "src": "18468:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_007150be50a4671a6be318012e9cd2eabb1e1bc8869b45c34abbaa04d81c8eee",
                              "typeString": "literal_string \"log(address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15589,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18405:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15590,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18409:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18405:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18405:66:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15588,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "18389:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18389:83:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15597,
                  "nodeType": "ExpressionStatement",
                  "src": "18389:83:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18319:3:15",
            "parameters": {
              "id": 15586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15581,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18331:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15599,
                  "src": "18323:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15580,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18323:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15583,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18343:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15599,
                  "src": "18335:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15582,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18335:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15585,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18361:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15599,
                  "src": "18347:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15584,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "18347:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18322:42:15"
            },
            "returnParameters": {
              "id": 15587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18379:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15619,
            "nodeType": "FunctionDefinition",
            "src": "18485:158:15",
            "nodes": [],
            "body": {
              "id": 15618,
              "nodeType": "Block",
              "src": "18545:98:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c29",
                            "id": 15611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18595:27:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f2a6628622808c8bbef4f3e513ab11e708a8f5073988f2f7988e111aa26586dc",
                              "typeString": "literal_string \"log(address,address,bool)\""
                            },
                            "value": "log(address,address,bool)"
                          },
                          {
                            "id": 15612,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15601,
                            "src": "18624:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15613,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15603,
                            "src": "18628:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15614,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15605,
                            "src": "18632:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f2a6628622808c8bbef4f3e513ab11e708a8f5073988f2f7988e111aa26586dc",
                              "typeString": "literal_string \"log(address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15609,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18571:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18575:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18571:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15615,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18571:64:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15608,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "18555:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15616,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18555:81:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15617,
                  "nodeType": "ExpressionStatement",
                  "src": "18555:81:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18494:3:15",
            "parameters": {
              "id": 15606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15601,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18506:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15619,
                  "src": "18498:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15600,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18498:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15603,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18518:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15619,
                  "src": "18510:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15602,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18510:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15605,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18527:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15619,
                  "src": "18522:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15604,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "18522:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18497:33:15"
            },
            "returnParameters": {
              "id": 15607,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18545:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15639,
            "nodeType": "FunctionDefinition",
            "src": "18649:164:15",
            "nodes": [],
            "body": {
              "id": 15638,
              "nodeType": "Block",
              "src": "18712:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c6164647265737329",
                            "id": 15631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18762:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_018c84c25fb680b5bcd4e1ab1848682497c9dd3b635564a91c36ce3d1414c830",
                              "typeString": "literal_string \"log(address,address,address)\""
                            },
                            "value": "log(address,address,address)"
                          },
                          {
                            "id": 15632,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15621,
                            "src": "18794:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15633,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15623,
                            "src": "18798:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15634,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15625,
                            "src": "18802:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_018c84c25fb680b5bcd4e1ab1848682497c9dd3b635564a91c36ce3d1414c830",
                              "typeString": "literal_string \"log(address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15629,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18738:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18742:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18738:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18738:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15628,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "18722:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15636,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18722:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15637,
                  "nodeType": "ExpressionStatement",
                  "src": "18722:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18658:3:15",
            "parameters": {
              "id": 15626,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15621,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18670:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15639,
                  "src": "18662:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15620,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18662:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15623,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18682:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15639,
                  "src": "18674:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15622,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18674:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15625,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18694:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15639,
                  "src": "18686:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15624,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "18686:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18661:36:15"
            },
            "returnParameters": {
              "id": 15627,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18712:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15662,
            "nodeType": "FunctionDefinition",
            "src": "18819:164:15",
            "nodes": [],
            "body": {
              "id": 15661,
              "nodeType": "Block",
              "src": "18882:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c75696e742c75696e7429",
                            "id": 15653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18932:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5ca0ad3ec7f731e4661cde447171efd221faf44c50b57eba4cc4965c1f89c0b6",
                              "typeString": "literal_string \"log(uint,uint,uint,uint)\""
                            },
                            "value": "log(uint,uint,uint,uint)"
                          },
                          {
                            "id": 15654,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15641,
                            "src": "18960:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15655,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15643,
                            "src": "18964:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15656,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15645,
                            "src": "18968:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15657,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15647,
                            "src": "18972:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5ca0ad3ec7f731e4661cde447171efd221faf44c50b57eba4cc4965c1f89c0b6",
                              "typeString": "literal_string \"log(uint,uint,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15651,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "18908:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "18912:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "18908:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18908:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15650,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "18892:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15659,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18892:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15660,
                  "nodeType": "ExpressionStatement",
                  "src": "18892:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18828:3:15",
            "parameters": {
              "id": 15648,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15641,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "18837:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15662,
                  "src": "18832:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15640,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18832:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15643,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "18846:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15662,
                  "src": "18841:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15642,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18841:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15645,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "18855:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15662,
                  "src": "18850:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15644,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18850:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15647,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "18864:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15662,
                  "src": "18859:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15646,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18859:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18831:36:15"
            },
            "returnParameters": {
              "id": 15649,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "18882:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15685,
            "nodeType": "FunctionDefinition",
            "src": "18989:175:15",
            "nodes": [],
            "body": {
              "id": 15684,
              "nodeType": "Block",
              "src": "19061:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c75696e742c737472696e6729",
                            "id": 15676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19111:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_78ad7a0c8cf57ba0e3b9e892fd6558ba40a5d4c84ef5c8c5e36bfc8d7f23b0c5",
                              "typeString": "literal_string \"log(uint,uint,uint,string)\""
                            },
                            "value": "log(uint,uint,uint,string)"
                          },
                          {
                            "id": 15677,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15664,
                            "src": "19141:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15678,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15666,
                            "src": "19145:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15679,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15668,
                            "src": "19149:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15680,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15670,
                            "src": "19153:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_78ad7a0c8cf57ba0e3b9e892fd6558ba40a5d4c84ef5c8c5e36bfc8d7f23b0c5",
                              "typeString": "literal_string \"log(uint,uint,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15674,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19087:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19091:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19087:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15681,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19087:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15673,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "19071:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19071:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15683,
                  "nodeType": "ExpressionStatement",
                  "src": "19071:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "18998:3:15",
            "parameters": {
              "id": 15671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15664,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19007:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15685,
                  "src": "19002:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15663,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19002:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15666,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19016:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15685,
                  "src": "19011:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15665,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19011:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15668,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19025:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15685,
                  "src": "19020:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15667,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19020:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15670,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "19043:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15685,
                  "src": "19029:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15669,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "19029:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19001:45:15"
            },
            "returnParameters": {
              "id": 15672,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19061:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15708,
            "nodeType": "FunctionDefinition",
            "src": "19170:164:15",
            "nodes": [],
            "body": {
              "id": 15707,
              "nodeType": "Block",
              "src": "19233:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c75696e742c626f6f6c29",
                            "id": 15699,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19283:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6452b9cbdf8b8479d7ee301237b2d6dfa173fc92538628ab30d643fb4351918f",
                              "typeString": "literal_string \"log(uint,uint,uint,bool)\""
                            },
                            "value": "log(uint,uint,uint,bool)"
                          },
                          {
                            "id": 15700,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15687,
                            "src": "19311:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15701,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15689,
                            "src": "19315:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15702,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15691,
                            "src": "19319:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15703,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15693,
                            "src": "19323:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6452b9cbdf8b8479d7ee301237b2d6dfa173fc92538628ab30d643fb4351918f",
                              "typeString": "literal_string \"log(uint,uint,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15697,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19259:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19263:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19259:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19259:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15696,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "19243:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19243:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15706,
                  "nodeType": "ExpressionStatement",
                  "src": "19243:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19179:3:15",
            "parameters": {
              "id": 15694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15687,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19188:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15708,
                  "src": "19183:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15686,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19183:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15689,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19197:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15708,
                  "src": "19192:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15688,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19192:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15691,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19206:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15708,
                  "src": "19201:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15690,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19201:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15693,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "19215:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15708,
                  "src": "19210:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15692,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "19210:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19182:36:15"
            },
            "returnParameters": {
              "id": 15695,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19233:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15731,
            "nodeType": "FunctionDefinition",
            "src": "19340:170:15",
            "nodes": [],
            "body": {
              "id": 15730,
              "nodeType": "Block",
              "src": "19406:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c75696e742c6164647265737329",
                            "id": 15722,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19456:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e0853f69a5584c9e0aa87ddae9bd870cf5164166d612d334644e66176c1213ba",
                              "typeString": "literal_string \"log(uint,uint,uint,address)\""
                            },
                            "value": "log(uint,uint,uint,address)"
                          },
                          {
                            "id": 15723,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15710,
                            "src": "19487:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15724,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15712,
                            "src": "19491:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15725,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15714,
                            "src": "19495:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15726,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15716,
                            "src": "19499:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e0853f69a5584c9e0aa87ddae9bd870cf5164166d612d334644e66176c1213ba",
                              "typeString": "literal_string \"log(uint,uint,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15720,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19432:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19436:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19432:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19432:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15719,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "19416:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15728,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19416:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15729,
                  "nodeType": "ExpressionStatement",
                  "src": "19416:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19349:3:15",
            "parameters": {
              "id": 15717,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15710,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19358:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15731,
                  "src": "19353:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15709,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19353:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15712,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19367:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15731,
                  "src": "19362:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15711,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19362:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15714,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19376:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15731,
                  "src": "19371:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15713,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19371:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15716,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "19388:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15731,
                  "src": "19380:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15715,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "19380:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19352:39:15"
            },
            "returnParameters": {
              "id": 15718,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19406:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15754,
            "nodeType": "FunctionDefinition",
            "src": "19516:175:15",
            "nodes": [],
            "body": {
              "id": 15753,
              "nodeType": "Block",
              "src": "19588:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c737472696e672c75696e7429",
                            "id": 15745,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19638:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3894163d4e8f3eec101fb8e2c1029563bd05d05ee1d1790a46910ebbbdc3072e",
                              "typeString": "literal_string \"log(uint,uint,string,uint)\""
                            },
                            "value": "log(uint,uint,string,uint)"
                          },
                          {
                            "id": 15746,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15733,
                            "src": "19668:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15747,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15735,
                            "src": "19672:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15748,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15737,
                            "src": "19676:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15749,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15739,
                            "src": "19680:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3894163d4e8f3eec101fb8e2c1029563bd05d05ee1d1790a46910ebbbdc3072e",
                              "typeString": "literal_string \"log(uint,uint,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15743,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19614:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19618:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19614:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15750,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19614:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15742,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "19598:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19598:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15752,
                  "nodeType": "ExpressionStatement",
                  "src": "19598:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19525:3:15",
            "parameters": {
              "id": 15740,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15733,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19534:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15754,
                  "src": "19529:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15732,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19529:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15735,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19543:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15754,
                  "src": "19538:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15734,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19538:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15737,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19561:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15754,
                  "src": "19547:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15736,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "19547:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15739,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "19570:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15754,
                  "src": "19565:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15738,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19565:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19528:45:15"
            },
            "returnParameters": {
              "id": 15741,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19588:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15777,
            "nodeType": "FunctionDefinition",
            "src": "19697:186:15",
            "nodes": [],
            "body": {
              "id": 15776,
              "nodeType": "Block",
              "src": "19778:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c737472696e672c737472696e6729",
                            "id": 15768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19828:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7c032a3207958e3d969ab52b045e7a59226129ee4b9e813f7071f9a5e80813f6",
                              "typeString": "literal_string \"log(uint,uint,string,string)\""
                            },
                            "value": "log(uint,uint,string,string)"
                          },
                          {
                            "id": 15769,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15756,
                            "src": "19860:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15770,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15758,
                            "src": "19864:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15771,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15760,
                            "src": "19868:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15772,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15762,
                            "src": "19872:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7c032a3207958e3d969ab52b045e7a59226129ee4b9e813f7071f9a5e80813f6",
                              "typeString": "literal_string \"log(uint,uint,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15766,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19804:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15767,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19808:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19804:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15773,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19804:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15765,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "19788:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19788:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15775,
                  "nodeType": "ExpressionStatement",
                  "src": "19788:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19706:3:15",
            "parameters": {
              "id": 15763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15756,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19715:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15777,
                  "src": "19710:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15755,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19710:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15758,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19724:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15777,
                  "src": "19719:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15757,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19719:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15760,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19742:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15777,
                  "src": "19728:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15759,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "19728:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15762,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "19760:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15777,
                  "src": "19746:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15761,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "19746:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19709:54:15"
            },
            "returnParameters": {
              "id": 15764,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19778:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15800,
            "nodeType": "FunctionDefinition",
            "src": "19889:175:15",
            "nodes": [],
            "body": {
              "id": 15799,
              "nodeType": "Block",
              "src": "19961:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c737472696e672c626f6f6c29",
                            "id": 15791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20011:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b22eaf06d72d481cf9b94b8f4d5fb89cf08bbfd924ee166a250ac94617be65b9",
                              "typeString": "literal_string \"log(uint,uint,string,bool)\""
                            },
                            "value": "log(uint,uint,string,bool)"
                          },
                          {
                            "id": 15792,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15779,
                            "src": "20041:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15793,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15781,
                            "src": "20045:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15794,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15783,
                            "src": "20049:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15795,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15785,
                            "src": "20053:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b22eaf06d72d481cf9b94b8f4d5fb89cf08bbfd924ee166a250ac94617be65b9",
                              "typeString": "literal_string \"log(uint,uint,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15789,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19987:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "19991:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "19987:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15796,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19987:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15788,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "19971:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19971:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15798,
                  "nodeType": "ExpressionStatement",
                  "src": "19971:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "19898:3:15",
            "parameters": {
              "id": 15786,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15779,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "19907:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15800,
                  "src": "19902:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15778,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19902:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15781,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "19916:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15800,
                  "src": "19911:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15780,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "19911:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15783,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "19934:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15800,
                  "src": "19920:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15782,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "19920:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15785,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "19943:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15800,
                  "src": "19938:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15784,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "19938:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "19901:45:15"
            },
            "returnParameters": {
              "id": 15787,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19961:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15823,
            "nodeType": "FunctionDefinition",
            "src": "20070:181:15",
            "nodes": [],
            "body": {
              "id": 15822,
              "nodeType": "Block",
              "src": "20145:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c737472696e672c6164647265737329",
                            "id": 15814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20195:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_433285a23ec6b1f0f76da64682232527561857544109f80e3e5d46b0e16980e7",
                              "typeString": "literal_string \"log(uint,uint,string,address)\""
                            },
                            "value": "log(uint,uint,string,address)"
                          },
                          {
                            "id": 15815,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15802,
                            "src": "20228:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15816,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15804,
                            "src": "20232:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15817,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15806,
                            "src": "20236:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 15818,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15808,
                            "src": "20240:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_433285a23ec6b1f0f76da64682232527561857544109f80e3e5d46b0e16980e7",
                              "typeString": "literal_string \"log(uint,uint,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15812,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20171:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20175:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20171:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15819,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20171:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15811,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "20155:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20155:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15821,
                  "nodeType": "ExpressionStatement",
                  "src": "20155:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20079:3:15",
            "parameters": {
              "id": 15809,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15802,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20088:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15823,
                  "src": "20083:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15801,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20083:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15804,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20097:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15823,
                  "src": "20092:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15803,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20092:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15806,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20115:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15823,
                  "src": "20101:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15805,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "20101:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15808,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20127:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15823,
                  "src": "20119:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15807,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20119:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20082:48:15"
            },
            "returnParameters": {
              "id": 15810,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20145:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15846,
            "nodeType": "FunctionDefinition",
            "src": "20257:164:15",
            "nodes": [],
            "body": {
              "id": 15845,
              "nodeType": "Block",
              "src": "20320:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c626f6f6c2c75696e7429",
                            "id": 15837,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20370:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6c647c8c5fed6e02ad4f1c7bfb891e58ba00758f5d6cb92966fd0684c5b3fc8d",
                              "typeString": "literal_string \"log(uint,uint,bool,uint)\""
                            },
                            "value": "log(uint,uint,bool,uint)"
                          },
                          {
                            "id": 15838,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15825,
                            "src": "20398:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15839,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15827,
                            "src": "20402:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15840,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15829,
                            "src": "20406:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15841,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15831,
                            "src": "20410:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6c647c8c5fed6e02ad4f1c7bfb891e58ba00758f5d6cb92966fd0684c5b3fc8d",
                              "typeString": "literal_string \"log(uint,uint,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15835,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20346:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20350:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20346:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15842,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20346:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15834,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "20330:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15843,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20330:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15844,
                  "nodeType": "ExpressionStatement",
                  "src": "20330:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20266:3:15",
            "parameters": {
              "id": 15832,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15825,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20275:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15846,
                  "src": "20270:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15824,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20270:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15827,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20284:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15846,
                  "src": "20279:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15826,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20279:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15829,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20293:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15846,
                  "src": "20288:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15828,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20288:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15831,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20302:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15846,
                  "src": "20297:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15830,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20297:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20269:36:15"
            },
            "returnParameters": {
              "id": 15833,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20320:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15869,
            "nodeType": "FunctionDefinition",
            "src": "20427:175:15",
            "nodes": [],
            "body": {
              "id": 15868,
              "nodeType": "Block",
              "src": "20499:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c626f6f6c2c737472696e6729",
                            "id": 15860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20549:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_efd9cbeee79713372dd0a748a26a3fb36cbe4eb4e01a37fbde0cde0e101fc85a",
                              "typeString": "literal_string \"log(uint,uint,bool,string)\""
                            },
                            "value": "log(uint,uint,bool,string)"
                          },
                          {
                            "id": 15861,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15848,
                            "src": "20579:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15862,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15850,
                            "src": "20583:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15863,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15852,
                            "src": "20587:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15864,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15854,
                            "src": "20591:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_efd9cbeee79713372dd0a748a26a3fb36cbe4eb4e01a37fbde0cde0e101fc85a",
                              "typeString": "literal_string \"log(uint,uint,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15858,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20525:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20529:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20525:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20525:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15857,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "20509:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15866,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20509:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15867,
                  "nodeType": "ExpressionStatement",
                  "src": "20509:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20436:3:15",
            "parameters": {
              "id": 15855,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15848,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20445:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15869,
                  "src": "20440:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15847,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20440:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15850,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20454:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15869,
                  "src": "20449:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15849,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20449:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15852,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20463:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15869,
                  "src": "20458:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15851,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20458:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15854,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20481:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15869,
                  "src": "20467:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15853,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "20467:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20439:45:15"
            },
            "returnParameters": {
              "id": 15856,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20499:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15892,
            "nodeType": "FunctionDefinition",
            "src": "20608:164:15",
            "nodes": [],
            "body": {
              "id": 15891,
              "nodeType": "Block",
              "src": "20671:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c626f6f6c2c626f6f6c29",
                            "id": 15883,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20721:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_94be3bb13e096cdbc5a1999a524e3b6664a32da7e2c2954ae0e2b792a0dd1f41",
                              "typeString": "literal_string \"log(uint,uint,bool,bool)\""
                            },
                            "value": "log(uint,uint,bool,bool)"
                          },
                          {
                            "id": 15884,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15871,
                            "src": "20749:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15885,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15873,
                            "src": "20753:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15886,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15875,
                            "src": "20757:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15887,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15877,
                            "src": "20761:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_94be3bb13e096cdbc5a1999a524e3b6664a32da7e2c2954ae0e2b792a0dd1f41",
                              "typeString": "literal_string \"log(uint,uint,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15881,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20697:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20701:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20697:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20697:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15880,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "20681:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20681:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15890,
                  "nodeType": "ExpressionStatement",
                  "src": "20681:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20617:3:15",
            "parameters": {
              "id": 15878,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15871,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20626:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15892,
                  "src": "20621:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15870,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20621:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15873,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20635:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15892,
                  "src": "20630:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15872,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20630:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15875,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20644:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15892,
                  "src": "20639:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15874,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20639:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15877,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20653:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15892,
                  "src": "20648:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15876,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20648:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20620:36:15"
            },
            "returnParameters": {
              "id": 15879,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20671:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15915,
            "nodeType": "FunctionDefinition",
            "src": "20778:170:15",
            "nodes": [],
            "body": {
              "id": 15914,
              "nodeType": "Block",
              "src": "20844:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c626f6f6c2c6164647265737329",
                            "id": 15906,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20894:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e117744fcc46e4484cabd18d640497b4a9d76b7f775e79fe9a95e42427bd8976",
                              "typeString": "literal_string \"log(uint,uint,bool,address)\""
                            },
                            "value": "log(uint,uint,bool,address)"
                          },
                          {
                            "id": 15907,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15894,
                            "src": "20925:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15908,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15896,
                            "src": "20929:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15909,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15898,
                            "src": "20933:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 15910,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15900,
                            "src": "20937:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e117744fcc46e4484cabd18d640497b4a9d76b7f775e79fe9a95e42427bd8976",
                              "typeString": "literal_string \"log(uint,uint,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15904,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "20870:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "20874:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "20870:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20870:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15903,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "20854:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20854:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15913,
                  "nodeType": "ExpressionStatement",
                  "src": "20854:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20787:3:15",
            "parameters": {
              "id": 15901,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15894,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20796:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15915,
                  "src": "20791:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15893,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20791:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15896,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20805:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15915,
                  "src": "20800:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15895,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20800:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15898,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20814:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15915,
                  "src": "20809:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15897,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "20809:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15900,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "20826:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15915,
                  "src": "20818:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15899,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20818:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20790:39:15"
            },
            "returnParameters": {
              "id": 15902,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20844:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15938,
            "nodeType": "FunctionDefinition",
            "src": "20954:170:15",
            "nodes": [],
            "body": {
              "id": 15937,
              "nodeType": "Block",
              "src": "21020:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c616464726573732c75696e7429",
                            "id": 15929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21070:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_610ba8c0cae1123f7f8ad76791afd86dc185a4f1fe79a263112118ddb5231e9f",
                              "typeString": "literal_string \"log(uint,uint,address,uint)\""
                            },
                            "value": "log(uint,uint,address,uint)"
                          },
                          {
                            "id": 15930,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15917,
                            "src": "21101:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15931,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15919,
                            "src": "21105:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15932,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15921,
                            "src": "21109:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15933,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15923,
                            "src": "21113:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_610ba8c0cae1123f7f8ad76791afd86dc185a4f1fe79a263112118ddb5231e9f",
                              "typeString": "literal_string \"log(uint,uint,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 15927,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21046:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21050:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21046:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15934,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21046:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15926,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "21030:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15935,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21030:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15936,
                  "nodeType": "ExpressionStatement",
                  "src": "21030:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "20963:3:15",
            "parameters": {
              "id": 15924,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15917,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "20972:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15938,
                  "src": "20967:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15916,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20967:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15919,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "20981:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15938,
                  "src": "20976:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15918,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20976:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15921,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "20993:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15938,
                  "src": "20985:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15920,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "20985:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15923,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21002:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15938,
                  "src": "20997:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15922,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "20997:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "20966:39:15"
            },
            "returnParameters": {
              "id": 15925,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21020:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15961,
            "nodeType": "FunctionDefinition",
            "src": "21130:181:15",
            "nodes": [],
            "body": {
              "id": 15960,
              "nodeType": "Block",
              "src": "21205:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c616464726573732c737472696e6729",
                            "id": 15952,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21255:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d6a2d1de1bf5c0a47e82220cd592c8fb4a4a43f17ecab471044861ef70454227",
                              "typeString": "literal_string \"log(uint,uint,address,string)\""
                            },
                            "value": "log(uint,uint,address,string)"
                          },
                          {
                            "id": 15953,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15940,
                            "src": "21288:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15954,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15942,
                            "src": "21292:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15955,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15944,
                            "src": "21296:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15956,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15946,
                            "src": "21300:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d6a2d1de1bf5c0a47e82220cd592c8fb4a4a43f17ecab471044861ef70454227",
                              "typeString": "literal_string \"log(uint,uint,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 15950,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21231:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21235:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21231:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21231:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15949,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "21215:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21215:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15959,
                  "nodeType": "ExpressionStatement",
                  "src": "21215:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21139:3:15",
            "parameters": {
              "id": 15947,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15940,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21148:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15961,
                  "src": "21143:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15939,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21143:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15942,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21157:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15961,
                  "src": "21152:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15941,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21152:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15944,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21169:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15961,
                  "src": "21161:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15943,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21161:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15946,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21187:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15961,
                  "src": "21173:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15945,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21173:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21142:48:15"
            },
            "returnParameters": {
              "id": 15948,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21205:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 15984,
            "nodeType": "FunctionDefinition",
            "src": "21317:170:15",
            "nodes": [],
            "body": {
              "id": 15983,
              "nodeType": "Block",
              "src": "21383:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c616464726573732c626f6f6c29",
                            "id": 15975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21433:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a8e820ae9dc5fd5a845e5dabf2b296e5588fe5a0d8101de14323ebe3e8e2b6c0",
                              "typeString": "literal_string \"log(uint,uint,address,bool)\""
                            },
                            "value": "log(uint,uint,address,bool)"
                          },
                          {
                            "id": 15976,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15963,
                            "src": "21464:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15977,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15965,
                            "src": "21468:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 15978,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15967,
                            "src": "21472:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 15979,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15969,
                            "src": "21476:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a8e820ae9dc5fd5a845e5dabf2b296e5588fe5a0d8101de14323ebe3e8e2b6c0",
                              "typeString": "literal_string \"log(uint,uint,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 15973,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21409:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21413:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21409:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 15980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21409:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15972,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "21393:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 15981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21393:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15982,
                  "nodeType": "ExpressionStatement",
                  "src": "21393:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21326:3:15",
            "parameters": {
              "id": 15970,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15963,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21335:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15984,
                  "src": "21330:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15962,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21330:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15965,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21344:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15984,
                  "src": "21339:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15964,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21339:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15967,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21356:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15984,
                  "src": "21348:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15966,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21348:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15969,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21365:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 15984,
                  "src": "21360:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15968,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21360:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21329:39:15"
            },
            "returnParameters": {
              "id": 15971,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21383:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16007,
            "nodeType": "FunctionDefinition",
            "src": "21493:176:15",
            "nodes": [],
            "body": {
              "id": 16006,
              "nodeType": "Block",
              "src": "21562:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c75696e742c616464726573732c6164647265737329",
                            "id": 15998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21612:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ca939b20e9284d76bbbc091d0d45d06f650171230ac4f1f35652b8b6e1579811",
                              "typeString": "literal_string \"log(uint,uint,address,address)\""
                            },
                            "value": "log(uint,uint,address,address)"
                          },
                          {
                            "id": 15999,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15986,
                            "src": "21646:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16000,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15988,
                            "src": "21650:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16001,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15990,
                            "src": "21654:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16002,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15992,
                            "src": "21658:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ca939b20e9284d76bbbc091d0d45d06f650171230ac4f1f35652b8b6e1579811",
                              "typeString": "literal_string \"log(uint,uint,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 15996,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21588:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 15997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21592:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21588:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16003,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21588:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 15995,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "21572:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16004,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21572:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16005,
                  "nodeType": "ExpressionStatement",
                  "src": "21572:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21502:3:15",
            "parameters": {
              "id": 15993,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15986,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21511:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16007,
                  "src": "21506:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15985,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21506:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15988,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21520:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16007,
                  "src": "21515:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15987,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21515:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15990,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21532:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16007,
                  "src": "21524:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21524:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15992,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21544:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16007,
                  "src": "21536:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15991,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "21536:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21505:42:15"
            },
            "returnParameters": {
              "id": 15994,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21562:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16030,
            "nodeType": "FunctionDefinition",
            "src": "21675:175:15",
            "nodes": [],
            "body": {
              "id": 16029,
              "nodeType": "Block",
              "src": "21747:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c75696e742c75696e7429",
                            "id": 16021,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21797:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c0043807b5f951e0375253205c951c6e6a6b19b5de111342e8f6be7c7f284628",
                              "typeString": "literal_string \"log(uint,string,uint,uint)\""
                            },
                            "value": "log(uint,string,uint,uint)"
                          },
                          {
                            "id": 16022,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16009,
                            "src": "21827:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16023,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16011,
                            "src": "21831:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16024,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16013,
                            "src": "21835:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16025,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16015,
                            "src": "21839:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c0043807b5f951e0375253205c951c6e6a6b19b5de111342e8f6be7c7f284628",
                              "typeString": "literal_string \"log(uint,string,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16019,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21773:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21777:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21773:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21773:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16018,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "21757:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21757:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16028,
                  "nodeType": "ExpressionStatement",
                  "src": "21757:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21684:3:15",
            "parameters": {
              "id": 16016,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16009,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21693:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16030,
                  "src": "21688:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16008,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21688:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16011,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21711:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16030,
                  "src": "21697:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16010,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21697:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16013,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21720:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16030,
                  "src": "21715:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16012,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21715:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16015,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21729:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16030,
                  "src": "21724:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16014,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21724:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21687:45:15"
            },
            "returnParameters": {
              "id": 16017,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21747:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16053,
            "nodeType": "FunctionDefinition",
            "src": "21856:186:15",
            "nodes": [],
            "body": {
              "id": 16052,
              "nodeType": "Block",
              "src": "21937:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c75696e742c737472696e6729",
                            "id": 16044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "21987:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a2bc0c99cedfd873182e8eb1e68799dc8925c663b8ce2430858586fba62fe313",
                              "typeString": "literal_string \"log(uint,string,uint,string)\""
                            },
                            "value": "log(uint,string,uint,string)"
                          },
                          {
                            "id": 16045,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16032,
                            "src": "22019:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16046,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16034,
                            "src": "22023:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16047,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16036,
                            "src": "22027:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16048,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16038,
                            "src": "22031:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a2bc0c99cedfd873182e8eb1e68799dc8925c663b8ce2430858586fba62fe313",
                              "typeString": "literal_string \"log(uint,string,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16042,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "21963:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "21967:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "21963:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21963:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16041,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "21947:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16050,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21947:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16051,
                  "nodeType": "ExpressionStatement",
                  "src": "21947:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "21865:3:15",
            "parameters": {
              "id": 16039,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16032,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "21874:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16053,
                  "src": "21869:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16031,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21869:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16034,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "21892:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16053,
                  "src": "21878:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16033,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21878:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16036,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "21901:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16053,
                  "src": "21896:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16035,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21896:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16038,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "21919:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16053,
                  "src": "21905:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16037,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21905:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21868:54:15"
            },
            "returnParameters": {
              "id": 16040,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "21937:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16076,
            "nodeType": "FunctionDefinition",
            "src": "22048:175:15",
            "nodes": [],
            "body": {
              "id": 16075,
              "nodeType": "Block",
              "src": "22120:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c75696e742c626f6f6c29",
                            "id": 16067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22170:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_875a6e2ed2444d0d09e264b06717914212d8a793bea0f48b5633e707ac53784d",
                              "typeString": "literal_string \"log(uint,string,uint,bool)\""
                            },
                            "value": "log(uint,string,uint,bool)"
                          },
                          {
                            "id": 16068,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16055,
                            "src": "22200:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16069,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16057,
                            "src": "22204:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16070,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16059,
                            "src": "22208:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16071,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16061,
                            "src": "22212:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_875a6e2ed2444d0d09e264b06717914212d8a793bea0f48b5633e707ac53784d",
                              "typeString": "literal_string \"log(uint,string,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16065,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22146:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22150:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22146:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22146:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16064,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "22130:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22130:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16074,
                  "nodeType": "ExpressionStatement",
                  "src": "22130:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22057:3:15",
            "parameters": {
              "id": 16062,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16055,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22066:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16076,
                  "src": "22061:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16054,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22061:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16057,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22084:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16076,
                  "src": "22070:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16056,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22070:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16059,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22093:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16076,
                  "src": "22088:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16058,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22088:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16061,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22102:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16076,
                  "src": "22097:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16060,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22097:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22060:45:15"
            },
            "returnParameters": {
              "id": 16063,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22120:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16099,
            "nodeType": "FunctionDefinition",
            "src": "22229:181:15",
            "nodes": [],
            "body": {
              "id": 16098,
              "nodeType": "Block",
              "src": "22304:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c75696e742c6164647265737329",
                            "id": 16090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22354:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ab7bd9fd9b149127bbb235a3e1bec9a2e844f3968bdc1f48944c4b1973dacfda",
                              "typeString": "literal_string \"log(uint,string,uint,address)\""
                            },
                            "value": "log(uint,string,uint,address)"
                          },
                          {
                            "id": 16091,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16078,
                            "src": "22387:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16092,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16080,
                            "src": "22391:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16093,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16082,
                            "src": "22395:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16094,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16084,
                            "src": "22399:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ab7bd9fd9b149127bbb235a3e1bec9a2e844f3968bdc1f48944c4b1973dacfda",
                              "typeString": "literal_string \"log(uint,string,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16088,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22330:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22334:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22330:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16095,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22330:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16087,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "22314:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16096,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22314:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16097,
                  "nodeType": "ExpressionStatement",
                  "src": "22314:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22238:3:15",
            "parameters": {
              "id": 16085,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16078,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22247:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16099,
                  "src": "22242:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16077,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22242:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16080,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22265:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16099,
                  "src": "22251:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16079,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22251:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16082,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22274:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16099,
                  "src": "22269:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16081,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22269:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16084,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22286:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16099,
                  "src": "22278:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16083,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "22278:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22241:48:15"
            },
            "returnParameters": {
              "id": 16086,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22304:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16122,
            "nodeType": "FunctionDefinition",
            "src": "22416:186:15",
            "nodes": [],
            "body": {
              "id": 16121,
              "nodeType": "Block",
              "src": "22497:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c737472696e672c75696e7429",
                            "id": 16113,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22547:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_76ec635e4702367bf449b895743175fa2654af8170b6d9c20dd183616d0a192b",
                              "typeString": "literal_string \"log(uint,string,string,uint)\""
                            },
                            "value": "log(uint,string,string,uint)"
                          },
                          {
                            "id": 16114,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16101,
                            "src": "22579:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16115,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16103,
                            "src": "22583:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16116,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16105,
                            "src": "22587:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16117,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16107,
                            "src": "22591:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_76ec635e4702367bf449b895743175fa2654af8170b6d9c20dd183616d0a192b",
                              "typeString": "literal_string \"log(uint,string,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16111,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22523:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22527:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22523:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22523:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16110,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "22507:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22507:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16120,
                  "nodeType": "ExpressionStatement",
                  "src": "22507:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22425:3:15",
            "parameters": {
              "id": 16108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16101,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22434:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16122,
                  "src": "22429:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16100,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22429:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16103,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22452:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16122,
                  "src": "22438:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16102,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22438:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16105,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22470:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16122,
                  "src": "22456:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16104,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22456:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16107,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22479:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16122,
                  "src": "22474:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16106,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22474:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22428:54:15"
            },
            "returnParameters": {
              "id": 16109,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22497:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16145,
            "nodeType": "FunctionDefinition",
            "src": "22608:197:15",
            "nodes": [],
            "body": {
              "id": 16144,
              "nodeType": "Block",
              "src": "22698:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c737472696e672c737472696e6729",
                            "id": 16136,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22748:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_57dd0a119927787a0c91b48333e191a1b3a4082dcb6efc912e2ba5b047e15156",
                              "typeString": "literal_string \"log(uint,string,string,string)\""
                            },
                            "value": "log(uint,string,string,string)"
                          },
                          {
                            "id": 16137,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16124,
                            "src": "22782:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16138,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16126,
                            "src": "22786:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16139,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16128,
                            "src": "22790:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16140,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16130,
                            "src": "22794:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_57dd0a119927787a0c91b48333e191a1b3a4082dcb6efc912e2ba5b047e15156",
                              "typeString": "literal_string \"log(uint,string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16134,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22724:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16135,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22728:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22724:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16141,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22724:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16133,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "22708:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22708:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16143,
                  "nodeType": "ExpressionStatement",
                  "src": "22708:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22617:3:15",
            "parameters": {
              "id": 16131,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16124,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22626:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16145,
                  "src": "22621:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16123,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22621:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16126,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22644:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16145,
                  "src": "22630:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16125,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22630:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16128,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22662:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16145,
                  "src": "22648:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16127,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22648:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16130,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22680:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16145,
                  "src": "22666:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16129,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22666:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22620:63:15"
            },
            "returnParameters": {
              "id": 16132,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22698:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16168,
            "nodeType": "FunctionDefinition",
            "src": "22811:186:15",
            "nodes": [],
            "body": {
              "id": 16167,
              "nodeType": "Block",
              "src": "22892:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c737472696e672c626f6f6c29",
                            "id": 16159,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22942:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_12862b98fdb7950b0e6908443bc9d7894b44d5616424da5cdb6206a848affcbc",
                              "typeString": "literal_string \"log(uint,string,string,bool)\""
                            },
                            "value": "log(uint,string,string,bool)"
                          },
                          {
                            "id": 16160,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16147,
                            "src": "22974:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16161,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16149,
                            "src": "22978:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16162,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16151,
                            "src": "22982:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16163,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16153,
                            "src": "22986:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_12862b98fdb7950b0e6908443bc9d7894b44d5616424da5cdb6206a848affcbc",
                              "typeString": "literal_string \"log(uint,string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16157,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "22918:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "22922:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "22918:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "22918:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16156,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "22902:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22902:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16166,
                  "nodeType": "ExpressionStatement",
                  "src": "22902:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "22820:3:15",
            "parameters": {
              "id": 16154,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16147,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "22829:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16168,
                  "src": "22824:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16146,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22824:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16149,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "22847:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16168,
                  "src": "22833:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16148,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22833:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16151,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "22865:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16168,
                  "src": "22851:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16150,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "22851:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16153,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "22874:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16168,
                  "src": "22869:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16152,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "22869:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22823:54:15"
            },
            "returnParameters": {
              "id": 16155,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "22892:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16191,
            "nodeType": "FunctionDefinition",
            "src": "23003:192:15",
            "nodes": [],
            "body": {
              "id": 16190,
              "nodeType": "Block",
              "src": "23087:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c737472696e672c6164647265737329",
                            "id": 16182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23137:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cc988aa0514d1ed8be70a6bf2bdff4972e3f3420811b4adbd40f9b75b873fded",
                              "typeString": "literal_string \"log(uint,string,string,address)\""
                            },
                            "value": "log(uint,string,string,address)"
                          },
                          {
                            "id": 16183,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16170,
                            "src": "23172:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16184,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16172,
                            "src": "23176:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16185,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16174,
                            "src": "23180:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16186,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16176,
                            "src": "23184:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cc988aa0514d1ed8be70a6bf2bdff4972e3f3420811b4adbd40f9b75b873fded",
                              "typeString": "literal_string \"log(uint,string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16180,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23113:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23117:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23113:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23113:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16179,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "23097:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23097:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16189,
                  "nodeType": "ExpressionStatement",
                  "src": "23097:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23012:3:15",
            "parameters": {
              "id": 16177,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16170,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23021:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16191,
                  "src": "23016:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16169,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23016:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16172,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23039:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16191,
                  "src": "23025:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16171,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23025:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16174,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23057:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16191,
                  "src": "23043:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16173,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23043:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16176,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23069:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16191,
                  "src": "23061:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16175,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23061:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23015:57:15"
            },
            "returnParameters": {
              "id": 16178,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23087:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16214,
            "nodeType": "FunctionDefinition",
            "src": "23201:175:15",
            "nodes": [],
            "body": {
              "id": 16213,
              "nodeType": "Block",
              "src": "23273:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c626f6f6c2c75696e7429",
                            "id": 16205,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23323:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a4b48a7f4bdefee99950b35e5da7ba9724c3954e445cc3077000bce7a4265081",
                              "typeString": "literal_string \"log(uint,string,bool,uint)\""
                            },
                            "value": "log(uint,string,bool,uint)"
                          },
                          {
                            "id": 16206,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16193,
                            "src": "23353:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16207,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16195,
                            "src": "23357:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16208,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16197,
                            "src": "23361:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16209,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16199,
                            "src": "23365:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a4b48a7f4bdefee99950b35e5da7ba9724c3954e445cc3077000bce7a4265081",
                              "typeString": "literal_string \"log(uint,string,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16203,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23299:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23303:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23299:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16210,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23299:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16202,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "23283:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23283:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16212,
                  "nodeType": "ExpressionStatement",
                  "src": "23283:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23210:3:15",
            "parameters": {
              "id": 16200,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16193,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23219:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16214,
                  "src": "23214:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16192,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23214:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16195,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23237:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16214,
                  "src": "23223:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16194,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23223:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16197,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23246:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16214,
                  "src": "23241:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16196,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23241:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16199,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23255:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16214,
                  "src": "23250:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16198,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23250:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23213:45:15"
            },
            "returnParameters": {
              "id": 16201,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23273:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16237,
            "nodeType": "FunctionDefinition",
            "src": "23382:186:15",
            "nodes": [],
            "body": {
              "id": 16236,
              "nodeType": "Block",
              "src": "23463:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c626f6f6c2c737472696e6729",
                            "id": 16228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23513:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8d489ca064b1083bafb8388fd8f3d44c2255dbe322f7a52abe786a76257d06e4",
                              "typeString": "literal_string \"log(uint,string,bool,string)\""
                            },
                            "value": "log(uint,string,bool,string)"
                          },
                          {
                            "id": 16229,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16216,
                            "src": "23545:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16230,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16218,
                            "src": "23549:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16231,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16220,
                            "src": "23553:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16232,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16222,
                            "src": "23557:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8d489ca064b1083bafb8388fd8f3d44c2255dbe322f7a52abe786a76257d06e4",
                              "typeString": "literal_string \"log(uint,string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16226,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23489:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23493:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23489:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23489:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16225,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "23473:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23473:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16235,
                  "nodeType": "ExpressionStatement",
                  "src": "23473:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23391:3:15",
            "parameters": {
              "id": 16223,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16216,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23400:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16237,
                  "src": "23395:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16215,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23395:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16218,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23418:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16237,
                  "src": "23404:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16217,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23404:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16220,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23427:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16237,
                  "src": "23422:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16219,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23422:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16222,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23445:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16237,
                  "src": "23431:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16221,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23431:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23394:54:15"
            },
            "returnParameters": {
              "id": 16224,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23463:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16260,
            "nodeType": "FunctionDefinition",
            "src": "23574:175:15",
            "nodes": [],
            "body": {
              "id": 16259,
              "nodeType": "Block",
              "src": "23646:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c626f6f6c2c626f6f6c29",
                            "id": 16251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23696:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_51bc2bc161debf765eefa84d88e06440adeb87045d559377a9edb97406168b2a",
                              "typeString": "literal_string \"log(uint,string,bool,bool)\""
                            },
                            "value": "log(uint,string,bool,bool)"
                          },
                          {
                            "id": 16252,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16239,
                            "src": "23726:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16253,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16241,
                            "src": "23730:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16254,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16243,
                            "src": "23734:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16255,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16245,
                            "src": "23738:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_51bc2bc161debf765eefa84d88e06440adeb87045d559377a9edb97406168b2a",
                              "typeString": "literal_string \"log(uint,string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16249,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23672:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23676:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23672:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16256,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23672:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16248,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "23656:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23656:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16258,
                  "nodeType": "ExpressionStatement",
                  "src": "23656:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23583:3:15",
            "parameters": {
              "id": 16246,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16239,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23592:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16260,
                  "src": "23587:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16238,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23587:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16241,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23610:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16260,
                  "src": "23596:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16240,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23596:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16243,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23619:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16260,
                  "src": "23614:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16242,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23614:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16245,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23628:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16260,
                  "src": "23623:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16244,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23623:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23586:45:15"
            },
            "returnParameters": {
              "id": 16247,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23646:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16283,
            "nodeType": "FunctionDefinition",
            "src": "23755:181:15",
            "nodes": [],
            "body": {
              "id": 16282,
              "nodeType": "Block",
              "src": "23830:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c626f6f6c2c6164647265737329",
                            "id": 16274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23880:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_796f28a06ededa438107c0866560412d4d4337e29da4c7300f50c49a73c18829",
                              "typeString": "literal_string \"log(uint,string,bool,address)\""
                            },
                            "value": "log(uint,string,bool,address)"
                          },
                          {
                            "id": 16275,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16262,
                            "src": "23913:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16276,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16264,
                            "src": "23917:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16277,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16266,
                            "src": "23921:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16278,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16268,
                            "src": "23925:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_796f28a06ededa438107c0866560412d4d4337e29da4c7300f50c49a73c18829",
                              "typeString": "literal_string \"log(uint,string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16272,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "23856:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "23860:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "23856:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16279,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "23856:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16271,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "23840:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16280,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "23840:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16281,
                  "nodeType": "ExpressionStatement",
                  "src": "23840:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23764:3:15",
            "parameters": {
              "id": 16269,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16262,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23773:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16283,
                  "src": "23768:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16261,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23768:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16264,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23791:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16283,
                  "src": "23777:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16263,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23777:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16266,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23800:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16283,
                  "src": "23795:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16265,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "23795:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16268,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23812:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16283,
                  "src": "23804:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16267,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23804:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23767:48:15"
            },
            "returnParameters": {
              "id": 16270,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23830:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16306,
            "nodeType": "FunctionDefinition",
            "src": "23942:181:15",
            "nodes": [],
            "body": {
              "id": 16305,
              "nodeType": "Block",
              "src": "24017:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c616464726573732c75696e7429",
                            "id": 16297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24067:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_98e7f3f3a2c39a91982b0a3ae7f29043579abd563fc10531c052f92c3317af43",
                              "typeString": "literal_string \"log(uint,string,address,uint)\""
                            },
                            "value": "log(uint,string,address,uint)"
                          },
                          {
                            "id": 16298,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16285,
                            "src": "24100:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16299,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16287,
                            "src": "24104:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16300,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16289,
                            "src": "24108:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16301,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16291,
                            "src": "24112:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_98e7f3f3a2c39a91982b0a3ae7f29043579abd563fc10531c052f92c3317af43",
                              "typeString": "literal_string \"log(uint,string,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16295,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24043:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24047:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24043:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24043:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16294,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "24027:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24027:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16304,
                  "nodeType": "ExpressionStatement",
                  "src": "24027:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "23951:3:15",
            "parameters": {
              "id": 16292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16285,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "23960:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16306,
                  "src": "23955:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16284,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23955:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16287,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "23978:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16306,
                  "src": "23964:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16286,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "23964:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16289,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "23990:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16306,
                  "src": "23982:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16288,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "23982:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16291,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "23999:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16306,
                  "src": "23994:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16290,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23994:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23954:48:15"
            },
            "returnParameters": {
              "id": 16293,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24017:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16329,
            "nodeType": "FunctionDefinition",
            "src": "24129:192:15",
            "nodes": [],
            "body": {
              "id": 16328,
              "nodeType": "Block",
              "src": "24213:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c616464726573732c737472696e6729",
                            "id": 16320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24263:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f898577fdc87bf80b54b2b838f8b58bf5a74554c7beeb61b98f3c2b7d59f31e2",
                              "typeString": "literal_string \"log(uint,string,address,string)\""
                            },
                            "value": "log(uint,string,address,string)"
                          },
                          {
                            "id": 16321,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16308,
                            "src": "24298:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16322,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16310,
                            "src": "24302:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16323,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16312,
                            "src": "24306:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16324,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16314,
                            "src": "24310:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f898577fdc87bf80b54b2b838f8b58bf5a74554c7beeb61b98f3c2b7d59f31e2",
                              "typeString": "literal_string \"log(uint,string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16318,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24239:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24243:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24239:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24239:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16317,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "24223:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24223:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16327,
                  "nodeType": "ExpressionStatement",
                  "src": "24223:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24138:3:15",
            "parameters": {
              "id": 16315,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16308,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24147:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16329,
                  "src": "24142:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16307,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24142:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16310,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24165:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16329,
                  "src": "24151:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16309,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24151:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16312,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24177:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16329,
                  "src": "24169:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16311,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24169:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16314,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24195:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16329,
                  "src": "24181:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16313,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24181:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24141:57:15"
            },
            "returnParameters": {
              "id": 16316,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24213:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16352,
            "nodeType": "FunctionDefinition",
            "src": "24327:181:15",
            "nodes": [],
            "body": {
              "id": 16351,
              "nodeType": "Block",
              "src": "24402:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c616464726573732c626f6f6c29",
                            "id": 16343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24452:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f93fff378483bab1a84a8ae346090ff91e793863821a5430c45153390c3262e1",
                              "typeString": "literal_string \"log(uint,string,address,bool)\""
                            },
                            "value": "log(uint,string,address,bool)"
                          },
                          {
                            "id": 16344,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16331,
                            "src": "24485:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16345,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16333,
                            "src": "24489:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16346,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16335,
                            "src": "24493:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16347,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16337,
                            "src": "24497:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f93fff378483bab1a84a8ae346090ff91e793863821a5430c45153390c3262e1",
                              "typeString": "literal_string \"log(uint,string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16341,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24428:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24432:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24428:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24428:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16340,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "24412:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24412:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16350,
                  "nodeType": "ExpressionStatement",
                  "src": "24412:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24336:3:15",
            "parameters": {
              "id": 16338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16331,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24345:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16352,
                  "src": "24340:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16330,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24340:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16333,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24363:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16352,
                  "src": "24349:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16332,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24349:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16335,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24375:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16352,
                  "src": "24367:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16334,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24367:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16337,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24384:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16352,
                  "src": "24379:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16336,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24379:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24339:48:15"
            },
            "returnParameters": {
              "id": 16339,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24402:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16375,
            "nodeType": "FunctionDefinition",
            "src": "24514:187:15",
            "nodes": [],
            "body": {
              "id": 16374,
              "nodeType": "Block",
              "src": "24592:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c737472696e672c616464726573732c6164647265737329",
                            "id": 16366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24642:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7fa5458bb859a8b444c46f9915b7879afe7e200298580a00c5813ecf5c0a77cb",
                              "typeString": "literal_string \"log(uint,string,address,address)\""
                            },
                            "value": "log(uint,string,address,address)"
                          },
                          {
                            "id": 16367,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16354,
                            "src": "24678:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16368,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16356,
                            "src": "24682:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16369,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16358,
                            "src": "24686:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16370,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16360,
                            "src": "24690:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7fa5458bb859a8b444c46f9915b7879afe7e200298580a00c5813ecf5c0a77cb",
                              "typeString": "literal_string \"log(uint,string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16364,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24618:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24622:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24618:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24618:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16363,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "24602:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24602:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16373,
                  "nodeType": "ExpressionStatement",
                  "src": "24602:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24523:3:15",
            "parameters": {
              "id": 16361,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16354,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24532:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16375,
                  "src": "24527:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16353,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24527:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16356,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24550:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16375,
                  "src": "24536:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16355,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24536:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16358,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24562:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16375,
                  "src": "24554:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16357,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24554:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16360,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24574:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16375,
                  "src": "24566:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16359,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "24566:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24526:51:15"
            },
            "returnParameters": {
              "id": 16362,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24592:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16398,
            "nodeType": "FunctionDefinition",
            "src": "24707:164:15",
            "nodes": [],
            "body": {
              "id": 16397,
              "nodeType": "Block",
              "src": "24770:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c75696e742c75696e7429",
                            "id": 16389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24820:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_56828da42a6ecdc94480e6d223af96b676cdc4ca9a00b1d88a7646ef1e12541e",
                              "typeString": "literal_string \"log(uint,bool,uint,uint)\""
                            },
                            "value": "log(uint,bool,uint,uint)"
                          },
                          {
                            "id": 16390,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16377,
                            "src": "24848:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16391,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16379,
                            "src": "24852:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16392,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16381,
                            "src": "24856:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16393,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16383,
                            "src": "24860:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_56828da42a6ecdc94480e6d223af96b676cdc4ca9a00b1d88a7646ef1e12541e",
                              "typeString": "literal_string \"log(uint,bool,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16387,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24796:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24800:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24796:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24796:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16386,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "24780:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16395,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24780:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16396,
                  "nodeType": "ExpressionStatement",
                  "src": "24780:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24716:3:15",
            "parameters": {
              "id": 16384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16377,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24725:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16398,
                  "src": "24720:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16376,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24720:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16379,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24734:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16398,
                  "src": "24729:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16378,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24729:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16381,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24743:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16398,
                  "src": "24738:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16380,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24738:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16383,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24752:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16398,
                  "src": "24747:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16382,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24747:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24719:36:15"
            },
            "returnParameters": {
              "id": 16385,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24770:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16421,
            "nodeType": "FunctionDefinition",
            "src": "24877:175:15",
            "nodes": [],
            "body": {
              "id": 16420,
              "nodeType": "Block",
              "src": "24949:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c75696e742c737472696e6729",
                            "id": 16412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "24999:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e8ddbc56b4712607102717eb35a3ee6aa0309358d07a4257a282d4a44ceb2f63",
                              "typeString": "literal_string \"log(uint,bool,uint,string)\""
                            },
                            "value": "log(uint,bool,uint,string)"
                          },
                          {
                            "id": 16413,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16400,
                            "src": "25029:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16414,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16402,
                            "src": "25033:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16415,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16404,
                            "src": "25037:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16416,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16406,
                            "src": "25041:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e8ddbc56b4712607102717eb35a3ee6aa0309358d07a4257a282d4a44ceb2f63",
                              "typeString": "literal_string \"log(uint,bool,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16410,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "24975:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "24979:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "24975:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "24975:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16409,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "24959:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16418,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "24959:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16419,
                  "nodeType": "ExpressionStatement",
                  "src": "24959:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "24886:3:15",
            "parameters": {
              "id": 16407,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16400,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "24895:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16421,
                  "src": "24890:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16399,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24890:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16402,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "24904:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16421,
                  "src": "24899:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16401,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "24899:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16404,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "24913:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16421,
                  "src": "24908:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16403,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "24908:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16406,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "24931:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16421,
                  "src": "24917:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16405,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "24917:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "24889:45:15"
            },
            "returnParameters": {
              "id": 16408,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "24949:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16444,
            "nodeType": "FunctionDefinition",
            "src": "25058:164:15",
            "nodes": [],
            "body": {
              "id": 16443,
              "nodeType": "Block",
              "src": "25121:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c75696e742c626f6f6c29",
                            "id": 16435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25171:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d2abc4fdef6f35f3785755f2ca3a26416b52c0c4c5ad8b27342fc84a56532f2f",
                              "typeString": "literal_string \"log(uint,bool,uint,bool)\""
                            },
                            "value": "log(uint,bool,uint,bool)"
                          },
                          {
                            "id": 16436,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16423,
                            "src": "25199:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16437,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16425,
                            "src": "25203:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16438,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16427,
                            "src": "25207:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16439,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16429,
                            "src": "25211:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d2abc4fdef6f35f3785755f2ca3a26416b52c0c4c5ad8b27342fc84a56532f2f",
                              "typeString": "literal_string \"log(uint,bool,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16433,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25147:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25151:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25147:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25147:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16432,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "25131:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25131:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16442,
                  "nodeType": "ExpressionStatement",
                  "src": "25131:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25067:3:15",
            "parameters": {
              "id": 16430,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16423,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25076:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16444,
                  "src": "25071:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16422,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25071:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16425,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25085:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16444,
                  "src": "25080:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16424,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25080:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16427,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25094:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16444,
                  "src": "25089:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16426,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25089:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16429,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25103:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16444,
                  "src": "25098:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16428,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25098:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25070:36:15"
            },
            "returnParameters": {
              "id": 16431,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25121:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16467,
            "nodeType": "FunctionDefinition",
            "src": "25228:170:15",
            "nodes": [],
            "body": {
              "id": 16466,
              "nodeType": "Block",
              "src": "25294:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c75696e742c6164647265737329",
                            "id": 16458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25344:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4f40058ea8927b23c60661eeb28f54d3ce10f5f6cdd8e3ce445d34409ceb50a3",
                              "typeString": "literal_string \"log(uint,bool,uint,address)\""
                            },
                            "value": "log(uint,bool,uint,address)"
                          },
                          {
                            "id": 16459,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16446,
                            "src": "25375:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16460,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16448,
                            "src": "25379:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16461,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16450,
                            "src": "25383:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16462,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16452,
                            "src": "25387:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4f40058ea8927b23c60661eeb28f54d3ce10f5f6cdd8e3ce445d34409ceb50a3",
                              "typeString": "literal_string \"log(uint,bool,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16456,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25320:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25324:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25320:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25320:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16455,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "25304:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25304:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16465,
                  "nodeType": "ExpressionStatement",
                  "src": "25304:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25237:3:15",
            "parameters": {
              "id": 16453,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16446,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25246:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16467,
                  "src": "25241:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16445,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25241:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16448,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25255:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16467,
                  "src": "25250:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16447,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25250:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16450,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25264:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16467,
                  "src": "25259:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16449,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25259:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16452,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25276:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16467,
                  "src": "25268:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16451,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "25268:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25240:39:15"
            },
            "returnParameters": {
              "id": 16454,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25294:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16490,
            "nodeType": "FunctionDefinition",
            "src": "25404:175:15",
            "nodes": [],
            "body": {
              "id": 16489,
              "nodeType": "Block",
              "src": "25476:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c737472696e672c75696e7429",
                            "id": 16481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25526:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_915fdb28841654f5e04882ad0aa4f5de28bd90db1a700dae8b1eb5e67e36a012",
                              "typeString": "literal_string \"log(uint,bool,string,uint)\""
                            },
                            "value": "log(uint,bool,string,uint)"
                          },
                          {
                            "id": 16482,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16469,
                            "src": "25556:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16483,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16471,
                            "src": "25560:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16484,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16473,
                            "src": "25564:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16485,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16475,
                            "src": "25568:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_915fdb28841654f5e04882ad0aa4f5de28bd90db1a700dae8b1eb5e67e36a012",
                              "typeString": "literal_string \"log(uint,bool,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16479,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25502:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25506:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25502:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16486,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25502:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16478,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "25486:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16487,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25486:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16488,
                  "nodeType": "ExpressionStatement",
                  "src": "25486:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25413:3:15",
            "parameters": {
              "id": 16476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16469,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25422:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16490,
                  "src": "25417:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16468,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25417:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16471,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25431:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16490,
                  "src": "25426:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16470,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25426:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16473,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25449:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16490,
                  "src": "25435:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16472,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25435:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16475,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25458:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16490,
                  "src": "25453:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16474,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25453:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25416:45:15"
            },
            "returnParameters": {
              "id": 16477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25476:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16513,
            "nodeType": "FunctionDefinition",
            "src": "25585:186:15",
            "nodes": [],
            "body": {
              "id": 16512,
              "nodeType": "Block",
              "src": "25666:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c737472696e672c737472696e6729",
                            "id": 16504,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25716:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a433fcfd538cd0e077747fbb2c5a6453c1804c6ad4af653273e0d14ab4a0566a",
                              "typeString": "literal_string \"log(uint,bool,string,string)\""
                            },
                            "value": "log(uint,bool,string,string)"
                          },
                          {
                            "id": 16505,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16492,
                            "src": "25748:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16506,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16494,
                            "src": "25752:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16507,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16496,
                            "src": "25756:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16508,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16498,
                            "src": "25760:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a433fcfd538cd0e077747fbb2c5a6453c1804c6ad4af653273e0d14ab4a0566a",
                              "typeString": "literal_string \"log(uint,bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16502,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25692:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25696:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25692:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25692:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16501,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "25676:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25676:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16511,
                  "nodeType": "ExpressionStatement",
                  "src": "25676:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25594:3:15",
            "parameters": {
              "id": 16499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16492,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25603:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16513,
                  "src": "25598:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16491,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25598:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16494,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25612:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16513,
                  "src": "25607:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16493,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25607:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16496,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25630:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16513,
                  "src": "25616:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16495,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25616:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16498,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25648:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16513,
                  "src": "25634:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16497,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25634:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25597:54:15"
            },
            "returnParameters": {
              "id": 16500,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25666:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16536,
            "nodeType": "FunctionDefinition",
            "src": "25777:175:15",
            "nodes": [],
            "body": {
              "id": 16535,
              "nodeType": "Block",
              "src": "25849:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c737472696e672c626f6f6c29",
                            "id": 16527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25899:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_346eb8c74221bcb2c0a69b8dde628b7e6175c4f090782c8f07996b251212e22d",
                              "typeString": "literal_string \"log(uint,bool,string,bool)\""
                            },
                            "value": "log(uint,bool,string,bool)"
                          },
                          {
                            "id": 16528,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16515,
                            "src": "25929:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16529,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16517,
                            "src": "25933:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16530,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16519,
                            "src": "25937:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16531,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16521,
                            "src": "25941:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_346eb8c74221bcb2c0a69b8dde628b7e6175c4f090782c8f07996b251212e22d",
                              "typeString": "literal_string \"log(uint,bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16525,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "25875:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "25879:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "25875:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16532,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "25875:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16524,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "25859:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16533,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "25859:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16534,
                  "nodeType": "ExpressionStatement",
                  "src": "25859:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25786:3:15",
            "parameters": {
              "id": 16522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16515,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25795:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16536,
                  "src": "25790:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16514,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25790:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16517,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25804:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16536,
                  "src": "25799:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16516,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25799:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16519,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "25822:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16536,
                  "src": "25808:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16518,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25808:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16521,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "25831:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16536,
                  "src": "25826:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16520,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25826:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25789:45:15"
            },
            "returnParameters": {
              "id": 16523,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "25849:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16559,
            "nodeType": "FunctionDefinition",
            "src": "25958:181:15",
            "nodes": [],
            "body": {
              "id": 16558,
              "nodeType": "Block",
              "src": "26033:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c737472696e672c6164647265737329",
                            "id": 16550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26083:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_496e2bb45f5cdd3680c3e807c53955b9de163e898851c7844433c0a9c91dcd9d",
                              "typeString": "literal_string \"log(uint,bool,string,address)\""
                            },
                            "value": "log(uint,bool,string,address)"
                          },
                          {
                            "id": 16551,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16538,
                            "src": "26116:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16552,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16540,
                            "src": "26120:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16553,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16542,
                            "src": "26124:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16554,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16544,
                            "src": "26128:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_496e2bb45f5cdd3680c3e807c53955b9de163e898851c7844433c0a9c91dcd9d",
                              "typeString": "literal_string \"log(uint,bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16548,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26059:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26063:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26059:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16555,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26059:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16547,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "26043:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26043:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16557,
                  "nodeType": "ExpressionStatement",
                  "src": "26043:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "25967:3:15",
            "parameters": {
              "id": 16545,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16538,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "25976:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16559,
                  "src": "25971:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16537,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "25971:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16540,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "25985:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16559,
                  "src": "25980:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16539,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "25980:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16542,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26003:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16559,
                  "src": "25989:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16541,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "25989:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16544,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26015:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16559,
                  "src": "26007:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16543,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26007:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "25970:48:15"
            },
            "returnParameters": {
              "id": 16546,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26033:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16582,
            "nodeType": "FunctionDefinition",
            "src": "26145:164:15",
            "nodes": [],
            "body": {
              "id": 16581,
              "nodeType": "Block",
              "src": "26208:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c2c75696e7429",
                            "id": 16573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26258:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bd25ad5987e2f3e90d5ff2c9e0dad802782e9040e45e823722ccf598278cf7ed",
                              "typeString": "literal_string \"log(uint,bool,bool,uint)\""
                            },
                            "value": "log(uint,bool,bool,uint)"
                          },
                          {
                            "id": 16574,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16561,
                            "src": "26286:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16575,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16563,
                            "src": "26290:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16576,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16565,
                            "src": "26294:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16577,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16567,
                            "src": "26298:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bd25ad5987e2f3e90d5ff2c9e0dad802782e9040e45e823722ccf598278cf7ed",
                              "typeString": "literal_string \"log(uint,bool,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16571,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26234:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26238:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26234:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16578,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26234:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16570,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "26218:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26218:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16580,
                  "nodeType": "ExpressionStatement",
                  "src": "26218:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26154:3:15",
            "parameters": {
              "id": 16568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16561,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26163:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16582,
                  "src": "26158:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16560,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26158:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16563,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26172:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16582,
                  "src": "26167:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16562,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26167:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16565,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26181:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16582,
                  "src": "26176:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16564,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26176:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16567,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26190:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16582,
                  "src": "26185:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16566,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26185:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26157:36:15"
            },
            "returnParameters": {
              "id": 16569,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26208:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16605,
            "nodeType": "FunctionDefinition",
            "src": "26315:175:15",
            "nodes": [],
            "body": {
              "id": 16604,
              "nodeType": "Block",
              "src": "26387:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 16596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26437:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_318ae59b506d4efe5cd02b34be9f24009f0134ab1136defc4789a09e425a8861",
                              "typeString": "literal_string \"log(uint,bool,bool,string)\""
                            },
                            "value": "log(uint,bool,bool,string)"
                          },
                          {
                            "id": 16597,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16584,
                            "src": "26467:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16598,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16586,
                            "src": "26471:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16599,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16588,
                            "src": "26475:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16600,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16590,
                            "src": "26479:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_318ae59b506d4efe5cd02b34be9f24009f0134ab1136defc4789a09e425a8861",
                              "typeString": "literal_string \"log(uint,bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16594,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26413:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26417:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26413:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16601,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26413:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16593,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "26397:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26397:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16603,
                  "nodeType": "ExpressionStatement",
                  "src": "26397:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26324:3:15",
            "parameters": {
              "id": 16591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16584,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26333:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16605,
                  "src": "26328:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16583,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26328:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16586,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26342:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16605,
                  "src": "26337:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16585,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26337:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16588,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26351:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16605,
                  "src": "26346:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16587,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26346:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16590,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26369:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16605,
                  "src": "26355:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16589,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "26355:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26327:45:15"
            },
            "returnParameters": {
              "id": 16592,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26387:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16628,
            "nodeType": "FunctionDefinition",
            "src": "26496:164:15",
            "nodes": [],
            "body": {
              "id": 16627,
              "nodeType": "Block",
              "src": "26559:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 16619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26609:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4e6c5315e6998332ba87ae2545bc72447c94349a51e999446a98bfab04167b32",
                              "typeString": "literal_string \"log(uint,bool,bool,bool)\""
                            },
                            "value": "log(uint,bool,bool,bool)"
                          },
                          {
                            "id": 16620,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16607,
                            "src": "26637:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16621,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16609,
                            "src": "26641:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16622,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16611,
                            "src": "26645:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16623,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16613,
                            "src": "26649:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4e6c5315e6998332ba87ae2545bc72447c94349a51e999446a98bfab04167b32",
                              "typeString": "literal_string \"log(uint,bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16617,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26585:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26589:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26585:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16624,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26585:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16616,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "26569:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26569:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16626,
                  "nodeType": "ExpressionStatement",
                  "src": "26569:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26505:3:15",
            "parameters": {
              "id": 16614,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16607,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26514:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16628,
                  "src": "26509:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16606,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26509:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16609,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26523:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16628,
                  "src": "26518:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16608,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26518:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16611,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26532:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16628,
                  "src": "26527:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16610,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26527:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16613,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26541:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16628,
                  "src": "26536:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16612,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26536:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26508:36:15"
            },
            "returnParameters": {
              "id": 16615,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26559:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16651,
            "nodeType": "FunctionDefinition",
            "src": "26666:170:15",
            "nodes": [],
            "body": {
              "id": 16650,
              "nodeType": "Block",
              "src": "26732:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 16642,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26782:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5306225d3f6a0c340e12a634d8571b24a659d0fdcb96dd45e3bd062feb68355b",
                              "typeString": "literal_string \"log(uint,bool,bool,address)\""
                            },
                            "value": "log(uint,bool,bool,address)"
                          },
                          {
                            "id": 16643,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16630,
                            "src": "26813:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16644,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16632,
                            "src": "26817:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16645,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16634,
                            "src": "26821:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16646,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16636,
                            "src": "26825:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5306225d3f6a0c340e12a634d8571b24a659d0fdcb96dd45e3bd062feb68355b",
                              "typeString": "literal_string \"log(uint,bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16640,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26758:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26762:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26758:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26758:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16639,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "26742:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16648,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26742:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16649,
                  "nodeType": "ExpressionStatement",
                  "src": "26742:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26675:3:15",
            "parameters": {
              "id": 16637,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16630,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26684:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16651,
                  "src": "26679:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16629,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26679:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16632,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26693:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16651,
                  "src": "26688:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16631,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26688:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16634,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26702:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16651,
                  "src": "26697:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16633,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26697:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16636,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26714:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16651,
                  "src": "26706:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16635,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26706:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26678:39:15"
            },
            "returnParameters": {
              "id": 16638,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26732:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16674,
            "nodeType": "FunctionDefinition",
            "src": "26842:170:15",
            "nodes": [],
            "body": {
              "id": 16673,
              "nodeType": "Block",
              "src": "26908:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c616464726573732c75696e7429",
                            "id": 16665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "26958:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_41b5ef3bc57cb6072d9bbab757f04e68fb78a6a8b29741a7b963761abce32fb1",
                              "typeString": "literal_string \"log(uint,bool,address,uint)\""
                            },
                            "value": "log(uint,bool,address,uint)"
                          },
                          {
                            "id": 16666,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16653,
                            "src": "26989:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16667,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16655,
                            "src": "26993:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16668,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16657,
                            "src": "26997:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16669,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16659,
                            "src": "27001:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_41b5ef3bc57cb6072d9bbab757f04e68fb78a6a8b29741a7b963761abce32fb1",
                              "typeString": "literal_string \"log(uint,bool,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16663,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "26934:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "26938:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "26934:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "26934:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16662,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "26918:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "26918:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16672,
                  "nodeType": "ExpressionStatement",
                  "src": "26918:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "26851:3:15",
            "parameters": {
              "id": 16660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16653,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "26860:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16674,
                  "src": "26855:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16652,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26855:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16655,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "26869:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16674,
                  "src": "26864:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16654,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "26864:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16657,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "26881:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16674,
                  "src": "26873:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16656,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "26873:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16659,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "26890:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16674,
                  "src": "26885:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16658,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "26885:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "26854:39:15"
            },
            "returnParameters": {
              "id": 16661,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "26908:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16697,
            "nodeType": "FunctionDefinition",
            "src": "27018:181:15",
            "nodes": [],
            "body": {
              "id": 16696,
              "nodeType": "Block",
              "src": "27093:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c616464726573732c737472696e6729",
                            "id": 16688,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27143:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a230761e3811ae33e11d91e6667cf79e7e0ce8023ec276bdd69859f68587933c",
                              "typeString": "literal_string \"log(uint,bool,address,string)\""
                            },
                            "value": "log(uint,bool,address,string)"
                          },
                          {
                            "id": 16689,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16676,
                            "src": "27176:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16690,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16678,
                            "src": "27180:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16691,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16680,
                            "src": "27184:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16692,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16682,
                            "src": "27188:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a230761e3811ae33e11d91e6667cf79e7e0ce8023ec276bdd69859f68587933c",
                              "typeString": "literal_string \"log(uint,bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16686,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27119:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27123:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27119:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27119:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16685,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "27103:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27103:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16695,
                  "nodeType": "ExpressionStatement",
                  "src": "27103:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27027:3:15",
            "parameters": {
              "id": 16683,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16676,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27036:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16697,
                  "src": "27031:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16675,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27031:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16678,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27045:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16697,
                  "src": "27040:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16677,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27040:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16680,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27057:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16697,
                  "src": "27049:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16679,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27049:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16682,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27075:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16697,
                  "src": "27061:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16681,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "27061:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27030:48:15"
            },
            "returnParameters": {
              "id": 16684,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27093:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16720,
            "nodeType": "FunctionDefinition",
            "src": "27205:170:15",
            "nodes": [],
            "body": {
              "id": 16719,
              "nodeType": "Block",
              "src": "27271:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c616464726573732c626f6f6c29",
                            "id": 16711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27321:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_91fb124272873b32f25c28f6935451e3d46ffd78ac8ebaaa0e096a7942db5445",
                              "typeString": "literal_string \"log(uint,bool,address,bool)\""
                            },
                            "value": "log(uint,bool,address,bool)"
                          },
                          {
                            "id": 16712,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16699,
                            "src": "27352:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16713,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16701,
                            "src": "27356:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16714,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16703,
                            "src": "27360:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16715,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16705,
                            "src": "27364:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_91fb124272873b32f25c28f6935451e3d46ffd78ac8ebaaa0e096a7942db5445",
                              "typeString": "literal_string \"log(uint,bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16709,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27297:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27301:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27297:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16716,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27297:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16708,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "27281:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27281:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16718,
                  "nodeType": "ExpressionStatement",
                  "src": "27281:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27214:3:15",
            "parameters": {
              "id": 16706,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16699,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27223:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16720,
                  "src": "27218:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16698,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27218:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16701,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27232:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16720,
                  "src": "27227:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16700,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27227:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16703,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27244:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16720,
                  "src": "27236:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16702,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27236:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16705,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27253:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16720,
                  "src": "27248:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16704,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27248:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27217:39:15"
            },
            "returnParameters": {
              "id": 16707,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27271:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16743,
            "nodeType": "FunctionDefinition",
            "src": "27381:176:15",
            "nodes": [],
            "body": {
              "id": 16742,
              "nodeType": "Block",
              "src": "27450:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c626f6f6c2c616464726573732c6164647265737329",
                            "id": 16734,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27500:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_86edc10cd85187c3b3f180e68e570c794e768808cdffe5158045d6f841ae33f2",
                              "typeString": "literal_string \"log(uint,bool,address,address)\""
                            },
                            "value": "log(uint,bool,address,address)"
                          },
                          {
                            "id": 16735,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16722,
                            "src": "27534:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16736,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16724,
                            "src": "27538:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16737,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16726,
                            "src": "27542:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16738,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16728,
                            "src": "27546:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_86edc10cd85187c3b3f180e68e570c794e768808cdffe5158045d6f841ae33f2",
                              "typeString": "literal_string \"log(uint,bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16732,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27476:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27480:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27476:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27476:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16731,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "27460:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27460:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16741,
                  "nodeType": "ExpressionStatement",
                  "src": "27460:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27390:3:15",
            "parameters": {
              "id": 16729,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16722,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27399:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16743,
                  "src": "27394:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16721,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27394:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16724,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27408:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16743,
                  "src": "27403:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16723,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27403:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16726,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27420:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16743,
                  "src": "27412:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16725,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27412:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16728,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27432:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16743,
                  "src": "27424:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16727,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27424:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27393:42:15"
            },
            "returnParameters": {
              "id": 16730,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27450:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16766,
            "nodeType": "FunctionDefinition",
            "src": "27563:170:15",
            "nodes": [],
            "body": {
              "id": 16765,
              "nodeType": "Block",
              "src": "27629:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c75696e742c75696e7429",
                            "id": 16757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27679:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ca9a3eb4a61979ee5cc1814fa8df2504ab7831148afaa3d4c17622578eab7412",
                              "typeString": "literal_string \"log(uint,address,uint,uint)\""
                            },
                            "value": "log(uint,address,uint,uint)"
                          },
                          {
                            "id": 16758,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16745,
                            "src": "27710:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16759,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16747,
                            "src": "27714:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16760,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16749,
                            "src": "27718:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16761,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16751,
                            "src": "27722:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ca9a3eb4a61979ee5cc1814fa8df2504ab7831148afaa3d4c17622578eab7412",
                              "typeString": "literal_string \"log(uint,address,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16755,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27655:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27659:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27655:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16762,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27655:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16754,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "27639:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27639:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16764,
                  "nodeType": "ExpressionStatement",
                  "src": "27639:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27572:3:15",
            "parameters": {
              "id": 16752,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16745,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27581:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16766,
                  "src": "27576:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16744,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27576:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16747,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27593:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16766,
                  "src": "27585:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16746,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27585:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16749,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27602:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16766,
                  "src": "27597:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16748,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27597:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16751,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27611:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16766,
                  "src": "27606:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16750,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27606:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27575:39:15"
            },
            "returnParameters": {
              "id": 16753,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27629:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16789,
            "nodeType": "FunctionDefinition",
            "src": "27739:181:15",
            "nodes": [],
            "body": {
              "id": 16788,
              "nodeType": "Block",
              "src": "27814:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c75696e742c737472696e6729",
                            "id": 16780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "27864:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3ed3bd282d1a27244fa4d3668aff783448c1a1864ff920057fa9f1c8144bb10b",
                              "typeString": "literal_string \"log(uint,address,uint,string)\""
                            },
                            "value": "log(uint,address,uint,string)"
                          },
                          {
                            "id": 16781,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16768,
                            "src": "27897:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16782,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16770,
                            "src": "27901:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16783,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16772,
                            "src": "27905:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16784,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16774,
                            "src": "27909:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3ed3bd282d1a27244fa4d3668aff783448c1a1864ff920057fa9f1c8144bb10b",
                              "typeString": "literal_string \"log(uint,address,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16778,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "27840:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16779,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "27844:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "27840:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "27840:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16777,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "27824:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16786,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "27824:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16787,
                  "nodeType": "ExpressionStatement",
                  "src": "27824:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27748:3:15",
            "parameters": {
              "id": 16775,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16768,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27757:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16789,
                  "src": "27752:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16767,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27752:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16770,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27769:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16789,
                  "src": "27761:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16769,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27761:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16772,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27778:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16789,
                  "src": "27773:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16771,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27773:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16774,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27796:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16789,
                  "src": "27782:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16773,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "27782:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27751:48:15"
            },
            "returnParameters": {
              "id": 16776,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27814:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16812,
            "nodeType": "FunctionDefinition",
            "src": "27926:170:15",
            "nodes": [],
            "body": {
              "id": 16811,
              "nodeType": "Block",
              "src": "27992:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c75696e742c626f6f6c29",
                            "id": 16803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28042:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_19f67369d42bc0582d07ae744348ad46b79a6c16f354e3d3fb3c6bff2ecfa9f8",
                              "typeString": "literal_string \"log(uint,address,uint,bool)\""
                            },
                            "value": "log(uint,address,uint,bool)"
                          },
                          {
                            "id": 16804,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16791,
                            "src": "28073:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16805,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16793,
                            "src": "28077:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16806,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16795,
                            "src": "28081:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16807,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16797,
                            "src": "28085:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_19f67369d42bc0582d07ae744348ad46b79a6c16f354e3d3fb3c6bff2ecfa9f8",
                              "typeString": "literal_string \"log(uint,address,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16801,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28018:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16802,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28022:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28018:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16808,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28018:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16800,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "28002:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28002:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16810,
                  "nodeType": "ExpressionStatement",
                  "src": "28002:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "27935:3:15",
            "parameters": {
              "id": 16798,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16791,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "27944:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16812,
                  "src": "27939:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16790,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27939:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16793,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "27956:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16812,
                  "src": "27948:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "27948:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16795,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "27965:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16812,
                  "src": "27960:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16794,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "27960:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16797,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "27974:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16812,
                  "src": "27969:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16796,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "27969:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "27938:39:15"
            },
            "returnParameters": {
              "id": 16799,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "27992:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16835,
            "nodeType": "FunctionDefinition",
            "src": "28102:176:15",
            "nodes": [],
            "body": {
              "id": 16834,
              "nodeType": "Block",
              "src": "28171:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c75696e742c6164647265737329",
                            "id": 16826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28221:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fdb2ecd415c75df8f66285a054607fa1335126fb1d8930dfc21744a3de7298e3",
                              "typeString": "literal_string \"log(uint,address,uint,address)\""
                            },
                            "value": "log(uint,address,uint,address)"
                          },
                          {
                            "id": 16827,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16814,
                            "src": "28255:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16828,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16816,
                            "src": "28259:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16829,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16818,
                            "src": "28263:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16830,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16820,
                            "src": "28267:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fdb2ecd415c75df8f66285a054607fa1335126fb1d8930dfc21744a3de7298e3",
                              "typeString": "literal_string \"log(uint,address,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16824,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28197:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28201:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28197:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28197:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16823,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "28181:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16832,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28181:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16833,
                  "nodeType": "ExpressionStatement",
                  "src": "28181:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28111:3:15",
            "parameters": {
              "id": 16821,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16814,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28120:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16835,
                  "src": "28115:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16813,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "28115:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16816,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28132:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16835,
                  "src": "28124:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16815,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28124:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16818,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28141:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16835,
                  "src": "28136:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16817,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "28136:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16820,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28153:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16835,
                  "src": "28145:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16819,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28145:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28114:42:15"
            },
            "returnParameters": {
              "id": 16822,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28171:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16858,
            "nodeType": "FunctionDefinition",
            "src": "28284:181:15",
            "nodes": [],
            "body": {
              "id": 16857,
              "nodeType": "Block",
              "src": "28359:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c737472696e672c75696e7429",
                            "id": 16849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28409:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a0c414e8ba2ea65b865dd0bf68b2357e81261b47f237c68a4a8a63051bbef2eb",
                              "typeString": "literal_string \"log(uint,address,string,uint)\""
                            },
                            "value": "log(uint,address,string,uint)"
                          },
                          {
                            "id": 16850,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16837,
                            "src": "28442:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16851,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16839,
                            "src": "28446:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16852,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16841,
                            "src": "28450:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16853,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16843,
                            "src": "28454:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a0c414e8ba2ea65b865dd0bf68b2357e81261b47f237c68a4a8a63051bbef2eb",
                              "typeString": "literal_string \"log(uint,address,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16847,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28385:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28389:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28385:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16854,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28385:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16846,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "28369:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28369:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16856,
                  "nodeType": "ExpressionStatement",
                  "src": "28369:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28293:3:15",
            "parameters": {
              "id": 16844,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16837,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28302:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16858,
                  "src": "28297:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16836,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "28297:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16839,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28314:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16858,
                  "src": "28306:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16838,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28306:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16841,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28332:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16858,
                  "src": "28318:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16840,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "28318:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16843,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28341:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16858,
                  "src": "28336:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16842,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "28336:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28296:48:15"
            },
            "returnParameters": {
              "id": 16845,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28359:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16881,
            "nodeType": "FunctionDefinition",
            "src": "28471:192:15",
            "nodes": [],
            "body": {
              "id": 16880,
              "nodeType": "Block",
              "src": "28555:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c737472696e672c737472696e6729",
                            "id": 16872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28605:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8d778624e1d83269ce0415864bb54677b540f778c6b8503cf9035bc7517326f1",
                              "typeString": "literal_string \"log(uint,address,string,string)\""
                            },
                            "value": "log(uint,address,string,string)"
                          },
                          {
                            "id": 16873,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16860,
                            "src": "28640:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16874,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16862,
                            "src": "28644:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16875,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16864,
                            "src": "28648:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16876,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16866,
                            "src": "28652:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8d778624e1d83269ce0415864bb54677b540f778c6b8503cf9035bc7517326f1",
                              "typeString": "literal_string \"log(uint,address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16870,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28581:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28585:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28581:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28581:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16869,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "28565:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16878,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28565:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16879,
                  "nodeType": "ExpressionStatement",
                  "src": "28565:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28480:3:15",
            "parameters": {
              "id": 16867,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16860,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28489:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16881,
                  "src": "28484:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16859,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "28484:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16862,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28501:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16881,
                  "src": "28493:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16861,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28493:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16864,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28519:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16881,
                  "src": "28505:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16863,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "28505:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16866,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28537:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16881,
                  "src": "28523:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16865,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "28523:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28483:57:15"
            },
            "returnParameters": {
              "id": 16868,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28555:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16904,
            "nodeType": "FunctionDefinition",
            "src": "28669:181:15",
            "nodes": [],
            "body": {
              "id": 16903,
              "nodeType": "Block",
              "src": "28744:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c737472696e672c626f6f6c29",
                            "id": 16895,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28794:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_22a479a660b74b7598155f369ed227a5a93527fbdb04ff6f78fbf35fa23aacbf",
                              "typeString": "literal_string \"log(uint,address,string,bool)\""
                            },
                            "value": "log(uint,address,string,bool)"
                          },
                          {
                            "id": 16896,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16883,
                            "src": "28827:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16897,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16885,
                            "src": "28831:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16898,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16887,
                            "src": "28835:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16899,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16889,
                            "src": "28839:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_22a479a660b74b7598155f369ed227a5a93527fbdb04ff6f78fbf35fa23aacbf",
                              "typeString": "literal_string \"log(uint,address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16893,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28770:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28774:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28770:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16900,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28770:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16892,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "28754:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28754:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16902,
                  "nodeType": "ExpressionStatement",
                  "src": "28754:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28678:3:15",
            "parameters": {
              "id": 16890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16883,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28687:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16904,
                  "src": "28682:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16882,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "28682:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16885,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28699:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16904,
                  "src": "28691:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16884,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28691:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16887,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28717:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16904,
                  "src": "28703:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16886,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "28703:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16889,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28726:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16904,
                  "src": "28721:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16888,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "28721:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28681:48:15"
            },
            "returnParameters": {
              "id": 16891,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28744:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16927,
            "nodeType": "FunctionDefinition",
            "src": "28856:187:15",
            "nodes": [],
            "body": {
              "id": 16926,
              "nodeType": "Block",
              "src": "28934:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c737472696e672c6164647265737329",
                            "id": 16918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28984:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cbe58efddc067d74914c3479914810966ae688ac66ca2bbcae69cd9d0395796f",
                              "typeString": "literal_string \"log(uint,address,string,address)\""
                            },
                            "value": "log(uint,address,string,address)"
                          },
                          {
                            "id": 16919,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16906,
                            "src": "29020:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16920,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16908,
                            "src": "29024:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16921,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16910,
                            "src": "29028:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 16922,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16912,
                            "src": "29032:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cbe58efddc067d74914c3479914810966ae688ac66ca2bbcae69cd9d0395796f",
                              "typeString": "literal_string \"log(uint,address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 16916,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "28960:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "28964:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "28960:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16923,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "28960:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16915,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "28944:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "28944:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16925,
                  "nodeType": "ExpressionStatement",
                  "src": "28944:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "28865:3:15",
            "parameters": {
              "id": 16913,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16906,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "28874:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16927,
                  "src": "28869:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16905,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "28869:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16908,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "28886:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16927,
                  "src": "28878:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28878:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16910,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "28904:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16927,
                  "src": "28890:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16909,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "28890:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16912,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "28916:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16927,
                  "src": "28908:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16911,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "28908:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "28868:51:15"
            },
            "returnParameters": {
              "id": 16914,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "28934:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16950,
            "nodeType": "FunctionDefinition",
            "src": "29049:170:15",
            "nodes": [],
            "body": {
              "id": 16949,
              "nodeType": "Block",
              "src": "29115:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c626f6f6c2c75696e7429",
                            "id": 16941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29165:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7b08e8ebd6be8a04c54551194ba5143f1a555d43fe60d53843383a9915eeccb2",
                              "typeString": "literal_string \"log(uint,address,bool,uint)\""
                            },
                            "value": "log(uint,address,bool,uint)"
                          },
                          {
                            "id": 16942,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16929,
                            "src": "29196:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16943,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16931,
                            "src": "29200:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16944,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16933,
                            "src": "29204:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16945,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16935,
                            "src": "29208:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7b08e8ebd6be8a04c54551194ba5143f1a555d43fe60d53843383a9915eeccb2",
                              "typeString": "literal_string \"log(uint,address,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 16939,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29141:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29145:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29141:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29141:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16938,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "29125:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29125:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16948,
                  "nodeType": "ExpressionStatement",
                  "src": "29125:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29058:3:15",
            "parameters": {
              "id": 16936,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16929,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29067:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16950,
                  "src": "29062:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16928,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "29062:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16931,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29079:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16950,
                  "src": "29071:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16930,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29071:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16933,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29088:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16950,
                  "src": "29083:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16932,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29083:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16935,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29097:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16950,
                  "src": "29092:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16934,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "29092:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29061:39:15"
            },
            "returnParameters": {
              "id": 16937,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29115:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16973,
            "nodeType": "FunctionDefinition",
            "src": "29225:181:15",
            "nodes": [],
            "body": {
              "id": 16972,
              "nodeType": "Block",
              "src": "29300:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c626f6f6c2c737472696e6729",
                            "id": 16964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29350:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_63f0e24221aeb6c531ea500a191ac35497bf48695fb29864fe57726a12d605c6",
                              "typeString": "literal_string \"log(uint,address,bool,string)\""
                            },
                            "value": "log(uint,address,bool,string)"
                          },
                          {
                            "id": 16965,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16952,
                            "src": "29383:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16966,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16954,
                            "src": "29387:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16967,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16956,
                            "src": "29391:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16968,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16958,
                            "src": "29395:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_63f0e24221aeb6c531ea500a191ac35497bf48695fb29864fe57726a12d605c6",
                              "typeString": "literal_string \"log(uint,address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 16962,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29326:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29330:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29326:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16969,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29326:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16961,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "29310:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16970,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29310:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16971,
                  "nodeType": "ExpressionStatement",
                  "src": "29310:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29234:3:15",
            "parameters": {
              "id": 16959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16952,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29243:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16973,
                  "src": "29238:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16951,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "29238:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16954,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29255:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16973,
                  "src": "29247:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29247:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16956,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29264:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16973,
                  "src": "29259:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16955,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29259:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16958,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29282:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16973,
                  "src": "29268:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16957,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "29268:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29237:48:15"
            },
            "returnParameters": {
              "id": 16960,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29300:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 16996,
            "nodeType": "FunctionDefinition",
            "src": "29412:170:15",
            "nodes": [],
            "body": {
              "id": 16995,
              "nodeType": "Block",
              "src": "29478:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c626f6f6c2c626f6f6c29",
                            "id": 16987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29528:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7e27410dc86ab22a92f2a269c9cf538b707bde3ac248f933df1f4d0b76947d32",
                              "typeString": "literal_string \"log(uint,address,bool,bool)\""
                            },
                            "value": "log(uint,address,bool,bool)"
                          },
                          {
                            "id": 16988,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16975,
                            "src": "29559:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 16989,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16977,
                            "src": "29563:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 16990,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16979,
                            "src": "29567:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 16991,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16981,
                            "src": "29571:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7e27410dc86ab22a92f2a269c9cf538b707bde3ac248f933df1f4d0b76947d32",
                              "typeString": "literal_string \"log(uint,address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 16985,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29504:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 16986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29508:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29504:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 16992,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29504:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 16984,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "29488:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 16993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29488:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 16994,
                  "nodeType": "ExpressionStatement",
                  "src": "29488:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29421:3:15",
            "parameters": {
              "id": 16982,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16975,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29430:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16996,
                  "src": "29425:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16974,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "29425:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16977,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29442:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16996,
                  "src": "29434:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16976,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29434:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16979,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29451:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16996,
                  "src": "29446:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16978,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29446:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 16981,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29460:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 16996,
                  "src": "29455:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 16980,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29455:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29424:39:15"
            },
            "returnParameters": {
              "id": 16983,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29478:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17019,
            "nodeType": "FunctionDefinition",
            "src": "29588:176:15",
            "nodes": [],
            "body": {
              "id": 17018,
              "nodeType": "Block",
              "src": "29657:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c626f6f6c2c6164647265737329",
                            "id": 17010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29707:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b6313094a820841f3156e32d271c63cceded7f62875d471e1e87ef33ec252789",
                              "typeString": "literal_string \"log(uint,address,bool,address)\""
                            },
                            "value": "log(uint,address,bool,address)"
                          },
                          {
                            "id": 17011,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16998,
                            "src": "29741:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17012,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17000,
                            "src": "29745:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17013,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17002,
                            "src": "29749:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17014,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17004,
                            "src": "29753:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b6313094a820841f3156e32d271c63cceded7f62875d471e1e87ef33ec252789",
                              "typeString": "literal_string \"log(uint,address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17008,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29683:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29687:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29683:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17015,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29683:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17007,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "29667:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29667:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17017,
                  "nodeType": "ExpressionStatement",
                  "src": "29667:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29597:3:15",
            "parameters": {
              "id": 17005,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 16998,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29606:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17019,
                  "src": "29601:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16997,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "29601:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17000,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29618:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17019,
                  "src": "29610:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16999,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29610:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17002,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29627:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17019,
                  "src": "29622:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17001,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "29622:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17004,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29639:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17019,
                  "src": "29631:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17003,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29631:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29600:42:15"
            },
            "returnParameters": {
              "id": 17006,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29657:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17042,
            "nodeType": "FunctionDefinition",
            "src": "29770:176:15",
            "nodes": [],
            "body": {
              "id": 17041,
              "nodeType": "Block",
              "src": "29839:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c616464726573732c75696e7429",
                            "id": 17033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29889:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9a3cbf9603c94c357c6f62b7a32789d9ca5caa81518d1277c9ca986a5650734b",
                              "typeString": "literal_string \"log(uint,address,address,uint)\""
                            },
                            "value": "log(uint,address,address,uint)"
                          },
                          {
                            "id": 17034,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17021,
                            "src": "29923:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17035,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17023,
                            "src": "29927:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17036,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17025,
                            "src": "29931:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17037,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17027,
                            "src": "29935:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9a3cbf9603c94c357c6f62b7a32789d9ca5caa81518d1277c9ca986a5650734b",
                              "typeString": "literal_string \"log(uint,address,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17031,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "29865:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "29869:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "29865:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17038,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "29865:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17030,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "29849:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "29849:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17040,
                  "nodeType": "ExpressionStatement",
                  "src": "29849:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29779:3:15",
            "parameters": {
              "id": 17028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17021,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29788:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "29783:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17020,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "29783:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17023,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29800:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "29792:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17022,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29792:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17025,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29812:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "29804:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17024,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29804:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17027,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "29821:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17042,
                  "src": "29816:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17026,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "29816:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29782:42:15"
            },
            "returnParameters": {
              "id": 17029,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "29839:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17065,
            "nodeType": "FunctionDefinition",
            "src": "29952:187:15",
            "nodes": [],
            "body": {
              "id": 17064,
              "nodeType": "Block",
              "src": "30030:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c616464726573732c737472696e6729",
                            "id": 17056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30080:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7943dc6627d308affd474fe50b563bcfbf09518236383b806f11730459213622",
                              "typeString": "literal_string \"log(uint,address,address,string)\""
                            },
                            "value": "log(uint,address,address,string)"
                          },
                          {
                            "id": 17057,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17044,
                            "src": "30116:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17058,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17046,
                            "src": "30120:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17059,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17048,
                            "src": "30124:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17060,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17050,
                            "src": "30128:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7943dc6627d308affd474fe50b563bcfbf09518236383b806f11730459213622",
                              "typeString": "literal_string \"log(uint,address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17054,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30056:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30060:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30056:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30056:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17053,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "30040:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30040:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17063,
                  "nodeType": "ExpressionStatement",
                  "src": "30040:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "29961:3:15",
            "parameters": {
              "id": 17051,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17044,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "29970:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17065,
                  "src": "29965:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17043,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "29965:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17046,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "29982:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17065,
                  "src": "29974:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17045,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29974:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17048,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "29994:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17065,
                  "src": "29986:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17047,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "29986:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17050,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30012:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17065,
                  "src": "29998:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17049,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "29998:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "29964:51:15"
            },
            "returnParameters": {
              "id": 17052,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30030:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17088,
            "nodeType": "FunctionDefinition",
            "src": "30145:176:15",
            "nodes": [],
            "body": {
              "id": 17087,
              "nodeType": "Block",
              "src": "30214:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c616464726573732c626f6f6c29",
                            "id": 17079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30264:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_01550b04ea9916da7bc495d1b5ca5c4bd8d92ef3a98e2cca5a948cec5011f38c",
                              "typeString": "literal_string \"log(uint,address,address,bool)\""
                            },
                            "value": "log(uint,address,address,bool)"
                          },
                          {
                            "id": 17080,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17067,
                            "src": "30298:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17081,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17069,
                            "src": "30302:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17082,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17071,
                            "src": "30306:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17083,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17073,
                            "src": "30310:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_01550b04ea9916da7bc495d1b5ca5c4bd8d92ef3a98e2cca5a948cec5011f38c",
                              "typeString": "literal_string \"log(uint,address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17077,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30240:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30244:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30240:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17084,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30240:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17076,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "30224:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30224:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17086,
                  "nodeType": "ExpressionStatement",
                  "src": "30224:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30154:3:15",
            "parameters": {
              "id": 17074,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17067,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30163:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17088,
                  "src": "30158:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17066,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30158:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17069,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30175:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17088,
                  "src": "30167:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17068,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30167:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17071,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30187:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17088,
                  "src": "30179:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17070,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30179:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17073,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30196:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17088,
                  "src": "30191:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17072,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "30191:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30157:42:15"
            },
            "returnParameters": {
              "id": 17075,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30214:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17111,
            "nodeType": "FunctionDefinition",
            "src": "30327:182:15",
            "nodes": [],
            "body": {
              "id": 17110,
              "nodeType": "Block",
              "src": "30399:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f672875696e742c616464726573732c616464726573732c6164647265737329",
                            "id": 17102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30449:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_554745f9e6550eea6000ea2febc94de95d453100d5d60359e62cd398b366bfc4",
                              "typeString": "literal_string \"log(uint,address,address,address)\""
                            },
                            "value": "log(uint,address,address,address)"
                          },
                          {
                            "id": 17103,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17090,
                            "src": "30486:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17104,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17092,
                            "src": "30490:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17105,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17094,
                            "src": "30494:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17106,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17096,
                            "src": "30498:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_554745f9e6550eea6000ea2febc94de95d453100d5d60359e62cd398b366bfc4",
                              "typeString": "literal_string \"log(uint,address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17100,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30425:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30429:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30425:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17107,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30425:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17099,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "30409:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17108,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30409:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17109,
                  "nodeType": "ExpressionStatement",
                  "src": "30409:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30336:3:15",
            "parameters": {
              "id": 17097,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17090,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30345:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17111,
                  "src": "30340:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17089,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30340:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17092,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30357:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17111,
                  "src": "30349:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17091,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30349:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17094,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30369:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17111,
                  "src": "30361:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17093,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30361:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17096,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30381:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17111,
                  "src": "30373:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17095,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "30373:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30339:45:15"
            },
            "returnParameters": {
              "id": 17098,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30399:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17134,
            "nodeType": "FunctionDefinition",
            "src": "30515:175:15",
            "nodes": [],
            "body": {
              "id": 17133,
              "nodeType": "Block",
              "src": "30587:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c75696e742c75696e7429",
                            "id": 17125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30637:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_08ee5666d6bd329d27af528e563bb238dedf631fe471effe31c7123dcb5164f2",
                              "typeString": "literal_string \"log(string,uint,uint,uint)\""
                            },
                            "value": "log(string,uint,uint,uint)"
                          },
                          {
                            "id": 17126,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17113,
                            "src": "30667:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17127,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17115,
                            "src": "30671:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17128,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17117,
                            "src": "30675:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17129,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17119,
                            "src": "30679:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_08ee5666d6bd329d27af528e563bb238dedf631fe471effe31c7123dcb5164f2",
                              "typeString": "literal_string \"log(string,uint,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17123,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30613:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30617:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30613:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30613:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17122,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "30597:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17131,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30597:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17132,
                  "nodeType": "ExpressionStatement",
                  "src": "30597:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30524:3:15",
            "parameters": {
              "id": 17120,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17113,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30542:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17134,
                  "src": "30528:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17112,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30528:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17115,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30551:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17134,
                  "src": "30546:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17114,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30546:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17117,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30560:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17134,
                  "src": "30555:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17116,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30555:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17119,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30569:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17134,
                  "src": "30564:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17118,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30564:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30527:45:15"
            },
            "returnParameters": {
              "id": 17121,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30587:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17157,
            "nodeType": "FunctionDefinition",
            "src": "30696:186:15",
            "nodes": [],
            "body": {
              "id": 17156,
              "nodeType": "Block",
              "src": "30777:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c75696e742c737472696e6729",
                            "id": 17148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30827:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a54ed4bdd39588715cd10f1b9730ac9f0db064013c8dc11e216fa2ef3a5948b8",
                              "typeString": "literal_string \"log(string,uint,uint,string)\""
                            },
                            "value": "log(string,uint,uint,string)"
                          },
                          {
                            "id": 17149,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17136,
                            "src": "30859:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17150,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17138,
                            "src": "30863:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17151,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17140,
                            "src": "30867:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17152,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17142,
                            "src": "30871:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a54ed4bdd39588715cd10f1b9730ac9f0db064013c8dc11e216fa2ef3a5948b8",
                              "typeString": "literal_string \"log(string,uint,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17146,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30803:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30807:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30803:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30803:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17145,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "30787:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30787:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17155,
                  "nodeType": "ExpressionStatement",
                  "src": "30787:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30705:3:15",
            "parameters": {
              "id": 17143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17136,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30723:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17157,
                  "src": "30709:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17135,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30709:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17138,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30732:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17157,
                  "src": "30727:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17137,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30727:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17140,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30741:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17157,
                  "src": "30736:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17139,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30736:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17142,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30759:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17157,
                  "src": "30745:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17141,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30745:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30708:54:15"
            },
            "returnParameters": {
              "id": 17144,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30777:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17180,
            "nodeType": "FunctionDefinition",
            "src": "30888:175:15",
            "nodes": [],
            "body": {
              "id": 17179,
              "nodeType": "Block",
              "src": "30960:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c75696e742c626f6f6c29",
                            "id": 17171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31010:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f73c7e3dc5b5cecd5787e08e359612e609c17649291b138c8f184ee441526f2d",
                              "typeString": "literal_string \"log(string,uint,uint,bool)\""
                            },
                            "value": "log(string,uint,uint,bool)"
                          },
                          {
                            "id": 17172,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17159,
                            "src": "31040:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17173,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17161,
                            "src": "31044:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17174,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17163,
                            "src": "31048:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17175,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17165,
                            "src": "31052:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f73c7e3dc5b5cecd5787e08e359612e609c17649291b138c8f184ee441526f2d",
                              "typeString": "literal_string \"log(string,uint,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17169,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "30986:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "30990:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "30986:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17176,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "30986:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17168,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "30970:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17177,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "30970:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17178,
                  "nodeType": "ExpressionStatement",
                  "src": "30970:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "30897:3:15",
            "parameters": {
              "id": 17166,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17159,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "30915:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17180,
                  "src": "30901:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17158,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "30901:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17161,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "30924:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17180,
                  "src": "30919:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17160,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30919:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17163,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "30933:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17180,
                  "src": "30928:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17162,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "30928:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17165,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "30942:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17180,
                  "src": "30937:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17164,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "30937:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "30900:45:15"
            },
            "returnParameters": {
              "id": 17167,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "30960:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17203,
            "nodeType": "FunctionDefinition",
            "src": "31069:181:15",
            "nodes": [],
            "body": {
              "id": 17202,
              "nodeType": "Block",
              "src": "31144:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c75696e742c6164647265737329",
                            "id": 17194,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31194:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bed728bf5bf9afc41a2cff142cfc289808bbba64cbab683d8e6689e6f6f14abc",
                              "typeString": "literal_string \"log(string,uint,uint,address)\""
                            },
                            "value": "log(string,uint,uint,address)"
                          },
                          {
                            "id": 17195,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17182,
                            "src": "31227:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17196,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17184,
                            "src": "31231:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17197,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17186,
                            "src": "31235:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17198,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17188,
                            "src": "31239:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bed728bf5bf9afc41a2cff142cfc289808bbba64cbab683d8e6689e6f6f14abc",
                              "typeString": "literal_string \"log(string,uint,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17192,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31170:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31174:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31170:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31170:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17191,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "31154:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17200,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31154:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17201,
                  "nodeType": "ExpressionStatement",
                  "src": "31154:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31078:3:15",
            "parameters": {
              "id": 17189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17182,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31096:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17203,
                  "src": "31082:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17181,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31082:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17184,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31105:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17203,
                  "src": "31100:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17183,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "31100:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17186,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31114:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17203,
                  "src": "31109:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17185,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "31109:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17188,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31126:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17203,
                  "src": "31118:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17187,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31118:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31081:48:15"
            },
            "returnParameters": {
              "id": 17190,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31144:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17226,
            "nodeType": "FunctionDefinition",
            "src": "31256:186:15",
            "nodes": [],
            "body": {
              "id": 17225,
              "nodeType": "Block",
              "src": "31337:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c737472696e672c75696e7429",
                            "id": 17217,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31387:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a0c4b225a555b1198e8b1e32117070e759cad9a7266d99901b8a7fd2482d0e2f",
                              "typeString": "literal_string \"log(string,uint,string,uint)\""
                            },
                            "value": "log(string,uint,string,uint)"
                          },
                          {
                            "id": 17218,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17205,
                            "src": "31419:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17219,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17207,
                            "src": "31423:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17220,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17209,
                            "src": "31427:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17221,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17211,
                            "src": "31431:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a0c4b225a555b1198e8b1e32117070e759cad9a7266d99901b8a7fd2482d0e2f",
                              "typeString": "literal_string \"log(string,uint,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17215,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31363:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31367:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31363:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31363:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17214,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "31347:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31347:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17224,
                  "nodeType": "ExpressionStatement",
                  "src": "31347:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31265:3:15",
            "parameters": {
              "id": 17212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17205,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31283:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17226,
                  "src": "31269:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17204,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31269:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17207,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31292:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17226,
                  "src": "31287:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17206,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "31287:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17209,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31310:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17226,
                  "src": "31296:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17208,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31296:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17211,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31319:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17226,
                  "src": "31314:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17210,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "31314:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31268:54:15"
            },
            "returnParameters": {
              "id": 17213,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31337:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17249,
            "nodeType": "FunctionDefinition",
            "src": "31448:197:15",
            "nodes": [],
            "body": {
              "id": 17248,
              "nodeType": "Block",
              "src": "31538:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c737472696e672c737472696e6729",
                            "id": 17240,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31588:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6c98dae27db048edb14bb31b4326832aa1fb54be52caaf49d1cecb59aa297c07",
                              "typeString": "literal_string \"log(string,uint,string,string)\""
                            },
                            "value": "log(string,uint,string,string)"
                          },
                          {
                            "id": 17241,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17228,
                            "src": "31622:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17242,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17230,
                            "src": "31626:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17243,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17232,
                            "src": "31630:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17244,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17234,
                            "src": "31634:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6c98dae27db048edb14bb31b4326832aa1fb54be52caaf49d1cecb59aa297c07",
                              "typeString": "literal_string \"log(string,uint,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17238,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31564:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31568:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31564:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17245,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31564:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17237,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "31548:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31548:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17247,
                  "nodeType": "ExpressionStatement",
                  "src": "31548:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31457:3:15",
            "parameters": {
              "id": 17235,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17228,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31475:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17249,
                  "src": "31461:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17227,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31461:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17230,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31484:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17249,
                  "src": "31479:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17229,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "31479:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17232,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31502:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17249,
                  "src": "31488:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17231,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31488:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17234,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31520:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17249,
                  "src": "31506:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17233,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31506:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31460:63:15"
            },
            "returnParameters": {
              "id": 17236,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31538:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17272,
            "nodeType": "FunctionDefinition",
            "src": "31651:186:15",
            "nodes": [],
            "body": {
              "id": 17271,
              "nodeType": "Block",
              "src": "31732:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c737472696e672c626f6f6c29",
                            "id": 17263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31782:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e99f82cf29cb9d7551a843a55617f00569395570d3a9816be530f7c6197ec7c8",
                              "typeString": "literal_string \"log(string,uint,string,bool)\""
                            },
                            "value": "log(string,uint,string,bool)"
                          },
                          {
                            "id": 17264,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17251,
                            "src": "31814:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17265,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17253,
                            "src": "31818:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17266,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17255,
                            "src": "31822:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17267,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17257,
                            "src": "31826:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e99f82cf29cb9d7551a843a55617f00569395570d3a9816be530f7c6197ec7c8",
                              "typeString": "literal_string \"log(string,uint,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17261,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31758:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17262,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31762:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31758:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31758:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17260,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "31742:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31742:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17270,
                  "nodeType": "ExpressionStatement",
                  "src": "31742:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31660:3:15",
            "parameters": {
              "id": 17258,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17251,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31678:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17272,
                  "src": "31664:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17250,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31664:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17253,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31687:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17272,
                  "src": "31682:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17252,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "31682:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17255,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31705:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17272,
                  "src": "31691:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17254,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31691:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17257,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31714:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17272,
                  "src": "31709:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17256,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "31709:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31663:54:15"
            },
            "returnParameters": {
              "id": 17259,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31732:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17295,
            "nodeType": "FunctionDefinition",
            "src": "31843:192:15",
            "nodes": [],
            "body": {
              "id": 17294,
              "nodeType": "Block",
              "src": "31927:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c737472696e672c6164647265737329",
                            "id": 17286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31977:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bb7235e9977380af5de9932c5c28e18d22806b4b0a15ac7e98086e795e59b31c",
                              "typeString": "literal_string \"log(string,uint,string,address)\""
                            },
                            "value": "log(string,uint,string,address)"
                          },
                          {
                            "id": 17287,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17274,
                            "src": "32012:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17288,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17276,
                            "src": "32016:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17289,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17278,
                            "src": "32020:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17290,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17280,
                            "src": "32024:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bb7235e9977380af5de9932c5c28e18d22806b4b0a15ac7e98086e795e59b31c",
                              "typeString": "literal_string \"log(string,uint,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17284,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "31953:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "31957:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "31953:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "31953:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17283,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "31937:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "31937:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17293,
                  "nodeType": "ExpressionStatement",
                  "src": "31937:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "31852:3:15",
            "parameters": {
              "id": 17281,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17274,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "31870:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17295,
                  "src": "31856:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17273,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31856:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17276,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "31879:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17295,
                  "src": "31874:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17275,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "31874:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17278,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "31897:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17295,
                  "src": "31883:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17277,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "31883:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17280,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "31909:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17295,
                  "src": "31901:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17279,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "31901:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "31855:57:15"
            },
            "returnParameters": {
              "id": 17282,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "31927:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17318,
            "nodeType": "FunctionDefinition",
            "src": "32041:175:15",
            "nodes": [],
            "body": {
              "id": 17317,
              "nodeType": "Block",
              "src": "32113:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c2c75696e7429",
                            "id": 17309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32163:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_550e6ef516f1b3b5be9432b068022af744a919b7f9554b6605ddb59dad27875f",
                              "typeString": "literal_string \"log(string,uint,bool,uint)\""
                            },
                            "value": "log(string,uint,bool,uint)"
                          },
                          {
                            "id": 17310,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17297,
                            "src": "32193:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17311,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17299,
                            "src": "32197:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17312,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17301,
                            "src": "32201:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17313,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17303,
                            "src": "32205:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_550e6ef516f1b3b5be9432b068022af744a919b7f9554b6605ddb59dad27875f",
                              "typeString": "literal_string \"log(string,uint,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17307,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32139:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17308,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32143:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32139:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32139:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17306,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "32123:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32123:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17316,
                  "nodeType": "ExpressionStatement",
                  "src": "32123:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32050:3:15",
            "parameters": {
              "id": 17304,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17297,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32068:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17318,
                  "src": "32054:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17296,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32054:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17299,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32077:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17318,
                  "src": "32072:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17298,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "32072:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17301,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32086:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17318,
                  "src": "32081:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17300,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32081:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17303,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32095:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17318,
                  "src": "32090:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17302,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "32090:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32053:45:15"
            },
            "returnParameters": {
              "id": 17305,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32113:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17341,
            "nodeType": "FunctionDefinition",
            "src": "32222:186:15",
            "nodes": [],
            "body": {
              "id": 17340,
              "nodeType": "Block",
              "src": "32303:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c2c737472696e6729",
                            "id": 17332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32353:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_76cc6064a225b36730abdd64aa9dcb74a19c97e79a6eaa7e7a7381b59d8b3f68",
                              "typeString": "literal_string \"log(string,uint,bool,string)\""
                            },
                            "value": "log(string,uint,bool,string)"
                          },
                          {
                            "id": 17333,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17320,
                            "src": "32385:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17334,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17322,
                            "src": "32389:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17335,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17324,
                            "src": "32393:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17336,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17326,
                            "src": "32397:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_76cc6064a225b36730abdd64aa9dcb74a19c97e79a6eaa7e7a7381b59d8b3f68",
                              "typeString": "literal_string \"log(string,uint,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17330,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32329:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32333:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32329:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32329:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17329,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "32313:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32313:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17339,
                  "nodeType": "ExpressionStatement",
                  "src": "32313:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32231:3:15",
            "parameters": {
              "id": 17327,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17320,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32249:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17341,
                  "src": "32235:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17319,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32235:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17322,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32258:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17341,
                  "src": "32253:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17321,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "32253:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17324,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32267:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17341,
                  "src": "32262:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17323,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32262:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17326,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32285:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17341,
                  "src": "32271:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17325,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32271:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32234:54:15"
            },
            "returnParameters": {
              "id": 17328,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32303:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17364,
            "nodeType": "FunctionDefinition",
            "src": "32414:175:15",
            "nodes": [],
            "body": {
              "id": 17363,
              "nodeType": "Block",
              "src": "32486:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c2c626f6f6c29",
                            "id": 17355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32536:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e37ff3d07873d5117abd74fe9be70fdadf355b74510a6f7507b0edd4a0032d7f",
                              "typeString": "literal_string \"log(string,uint,bool,bool)\""
                            },
                            "value": "log(string,uint,bool,bool)"
                          },
                          {
                            "id": 17356,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17343,
                            "src": "32566:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17357,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17345,
                            "src": "32570:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17358,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17347,
                            "src": "32574:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17359,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17349,
                            "src": "32578:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e37ff3d07873d5117abd74fe9be70fdadf355b74510a6f7507b0edd4a0032d7f",
                              "typeString": "literal_string \"log(string,uint,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17353,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32512:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32516:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32512:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17360,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32512:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17352,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "32496:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32496:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17362,
                  "nodeType": "ExpressionStatement",
                  "src": "32496:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32423:3:15",
            "parameters": {
              "id": 17350,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17343,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32441:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17364,
                  "src": "32427:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17342,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32427:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17345,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32450:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17364,
                  "src": "32445:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17344,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "32445:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17347,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32459:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17364,
                  "src": "32454:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17346,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32454:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17349,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32468:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17364,
                  "src": "32463:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17348,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32463:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32426:45:15"
            },
            "returnParameters": {
              "id": 17351,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32486:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17387,
            "nodeType": "FunctionDefinition",
            "src": "32595:181:15",
            "nodes": [],
            "body": {
              "id": 17386,
              "nodeType": "Block",
              "src": "32670:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c2c6164647265737329",
                            "id": 17378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32720:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e5549d91ec2998207f70463fe94a71d0edc39b13b219ff8feb87dd990a616539",
                              "typeString": "literal_string \"log(string,uint,bool,address)\""
                            },
                            "value": "log(string,uint,bool,address)"
                          },
                          {
                            "id": 17379,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17366,
                            "src": "32753:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17380,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17368,
                            "src": "32757:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17381,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17370,
                            "src": "32761:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17382,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17372,
                            "src": "32765:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e5549d91ec2998207f70463fe94a71d0edc39b13b219ff8feb87dd990a616539",
                              "typeString": "literal_string \"log(string,uint,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17376,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32696:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32700:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32696:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32696:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17375,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "32680:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17384,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32680:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17385,
                  "nodeType": "ExpressionStatement",
                  "src": "32680:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32604:3:15",
            "parameters": {
              "id": 17373,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17366,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32622:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17387,
                  "src": "32608:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17365,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32608:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17368,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32631:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17387,
                  "src": "32626:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17367,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "32626:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17370,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32640:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17387,
                  "src": "32635:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17369,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "32635:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17372,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32652:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17387,
                  "src": "32644:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17371,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "32644:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32607:48:15"
            },
            "returnParameters": {
              "id": 17374,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32670:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17410,
            "nodeType": "FunctionDefinition",
            "src": "32782:181:15",
            "nodes": [],
            "body": {
              "id": 17409,
              "nodeType": "Block",
              "src": "32857:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c616464726573732c75696e7429",
                            "id": 17401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "32907:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_58497afe9e509136f5cf2fb1db9876437d9cbd769be5985b518ff094427e4f75",
                              "typeString": "literal_string \"log(string,uint,address,uint)\""
                            },
                            "value": "log(string,uint,address,uint)"
                          },
                          {
                            "id": 17402,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17389,
                            "src": "32940:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17403,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17391,
                            "src": "32944:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17404,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17393,
                            "src": "32948:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17405,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17395,
                            "src": "32952:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_58497afe9e509136f5cf2fb1db9876437d9cbd769be5985b518ff094427e4f75",
                              "typeString": "literal_string \"log(string,uint,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17399,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "32883:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "32887:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "32883:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17406,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "32883:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17398,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "32867:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17407,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "32867:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17408,
                  "nodeType": "ExpressionStatement",
                  "src": "32867:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32791:3:15",
            "parameters": {
              "id": 17396,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17389,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32809:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17410,
                  "src": "32795:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17388,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32795:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17391,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "32818:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17410,
                  "src": "32813:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17390,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "32813:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17393,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "32830:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17410,
                  "src": "32822:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17392,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "32822:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17395,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "32839:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17410,
                  "src": "32834:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17394,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "32834:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32794:48:15"
            },
            "returnParameters": {
              "id": 17397,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "32857:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17433,
            "nodeType": "FunctionDefinition",
            "src": "32969:192:15",
            "nodes": [],
            "body": {
              "id": 17432,
              "nodeType": "Block",
              "src": "33053:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c616464726573732c737472696e6729",
                            "id": 17424,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33103:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3254c2e85e824e7dd0b3e2e602f95218ed23a331406e197386693086d91053c0",
                              "typeString": "literal_string \"log(string,uint,address,string)\""
                            },
                            "value": "log(string,uint,address,string)"
                          },
                          {
                            "id": 17425,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17412,
                            "src": "33138:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17426,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17414,
                            "src": "33142:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17427,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17416,
                            "src": "33146:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17428,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17418,
                            "src": "33150:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3254c2e85e824e7dd0b3e2e602f95218ed23a331406e197386693086d91053c0",
                              "typeString": "literal_string \"log(string,uint,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17422,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33079:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33083:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33079:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17429,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33079:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17421,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "33063:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33063:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17431,
                  "nodeType": "ExpressionStatement",
                  "src": "33063:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "32978:3:15",
            "parameters": {
              "id": 17419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17412,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "32996:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17433,
                  "src": "32982:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17411,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "32982:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17414,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33005:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17433,
                  "src": "33000:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17413,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "33000:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17416,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33017:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17433,
                  "src": "33009:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "33009:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17418,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33035:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17433,
                  "src": "33021:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17417,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33021:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "32981:57:15"
            },
            "returnParameters": {
              "id": 17420,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33053:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17456,
            "nodeType": "FunctionDefinition",
            "src": "33167:181:15",
            "nodes": [],
            "body": {
              "id": 17455,
              "nodeType": "Block",
              "src": "33242:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c616464726573732c626f6f6c29",
                            "id": 17447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33292:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1106a8f7a9fdb0743cc8f33bcf28da92f358b488bfc5eb2426dcc116571bae10",
                              "typeString": "literal_string \"log(string,uint,address,bool)\""
                            },
                            "value": "log(string,uint,address,bool)"
                          },
                          {
                            "id": 17448,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17435,
                            "src": "33325:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17449,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17437,
                            "src": "33329:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17450,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17439,
                            "src": "33333:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17451,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17441,
                            "src": "33337:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1106a8f7a9fdb0743cc8f33bcf28da92f358b488bfc5eb2426dcc116571bae10",
                              "typeString": "literal_string \"log(string,uint,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17445,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33268:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33272:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33268:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33268:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17444,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "33252:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17453,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33252:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17454,
                  "nodeType": "ExpressionStatement",
                  "src": "33252:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33176:3:15",
            "parameters": {
              "id": 17442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17435,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33194:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17456,
                  "src": "33180:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17434,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33180:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17437,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33203:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17456,
                  "src": "33198:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17436,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "33198:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17439,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33215:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17456,
                  "src": "33207:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17438,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "33207:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17441,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33224:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17456,
                  "src": "33219:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17440,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "33219:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33179:48:15"
            },
            "returnParameters": {
              "id": 17443,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33242:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17479,
            "nodeType": "FunctionDefinition",
            "src": "33354:187:15",
            "nodes": [],
            "body": {
              "id": 17478,
              "nodeType": "Block",
              "src": "33432:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c75696e742c616464726573732c6164647265737329",
                            "id": 17470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33482:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eac892812ad5b43e056a005de5f4269f3430ecb19d3374f0e27d055022fbb381",
                              "typeString": "literal_string \"log(string,uint,address,address)\""
                            },
                            "value": "log(string,uint,address,address)"
                          },
                          {
                            "id": 17471,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17458,
                            "src": "33518:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17472,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17460,
                            "src": "33522:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17473,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17462,
                            "src": "33526:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17474,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17464,
                            "src": "33530:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_eac892812ad5b43e056a005de5f4269f3430ecb19d3374f0e27d055022fbb381",
                              "typeString": "literal_string \"log(string,uint,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17468,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33458:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33462:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33458:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33458:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17467,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "33442:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33442:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17477,
                  "nodeType": "ExpressionStatement",
                  "src": "33442:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33363:3:15",
            "parameters": {
              "id": 17465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17458,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33381:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17479,
                  "src": "33367:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17457,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33367:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17460,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33390:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17479,
                  "src": "33385:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17459,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "33385:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17462,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33402:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17479,
                  "src": "33394:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17461,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "33394:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17464,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33414:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17479,
                  "src": "33406:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17463,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "33406:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33366:51:15"
            },
            "returnParameters": {
              "id": 17466,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33432:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17502,
            "nodeType": "FunctionDefinition",
            "src": "33547:186:15",
            "nodes": [],
            "body": {
              "id": 17501,
              "nodeType": "Block",
              "src": "33628:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e742c75696e7429",
                            "id": 17493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33678:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d5cf17d093c9068e0703e037cea1f6c3048599508dc7985106a94aa34c08c926",
                              "typeString": "literal_string \"log(string,string,uint,uint)\""
                            },
                            "value": "log(string,string,uint,uint)"
                          },
                          {
                            "id": 17494,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17481,
                            "src": "33710:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17495,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17483,
                            "src": "33714:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17496,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17485,
                            "src": "33718:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17497,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17487,
                            "src": "33722:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d5cf17d093c9068e0703e037cea1f6c3048599508dc7985106a94aa34c08c926",
                              "typeString": "literal_string \"log(string,string,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17491,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33654:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33658:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33654:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33654:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17490,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "33638:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33638:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17500,
                  "nodeType": "ExpressionStatement",
                  "src": "33638:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33556:3:15",
            "parameters": {
              "id": 17488,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17481,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33574:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17502,
                  "src": "33560:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17480,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33560:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17483,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33592:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17502,
                  "src": "33578:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17482,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33578:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17485,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33601:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17502,
                  "src": "33596:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17484,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "33596:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17487,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33610:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17502,
                  "src": "33605:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17486,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "33605:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33559:54:15"
            },
            "returnParameters": {
              "id": 17489,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33628:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17525,
            "nodeType": "FunctionDefinition",
            "src": "33739:197:15",
            "nodes": [],
            "body": {
              "id": 17524,
              "nodeType": "Block",
              "src": "33829:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e742c737472696e6729",
                            "id": 17516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33879:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8d142cdddf40ab944834474e14a37534e67dcf2f6ffd68fd3d894f907fb76a0a",
                              "typeString": "literal_string \"log(string,string,uint,string)\""
                            },
                            "value": "log(string,string,uint,string)"
                          },
                          {
                            "id": 17517,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17504,
                            "src": "33913:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17518,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17506,
                            "src": "33917:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17519,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17508,
                            "src": "33921:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17520,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17510,
                            "src": "33925:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8d142cdddf40ab944834474e14a37534e67dcf2f6ffd68fd3d894f907fb76a0a",
                              "typeString": "literal_string \"log(string,string,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17514,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "33855:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "33859:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "33855:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "33855:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17513,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "33839:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "33839:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17523,
                  "nodeType": "ExpressionStatement",
                  "src": "33839:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33748:3:15",
            "parameters": {
              "id": 17511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17504,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33766:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17525,
                  "src": "33752:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17503,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33752:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17506,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33784:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17525,
                  "src": "33770:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17505,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33770:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17508,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33793:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17525,
                  "src": "33788:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17507,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "33788:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17510,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "33811:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17525,
                  "src": "33797:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17509,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33797:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33751:63:15"
            },
            "returnParameters": {
              "id": 17512,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "33829:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17548,
            "nodeType": "FunctionDefinition",
            "src": "33942:186:15",
            "nodes": [],
            "body": {
              "id": 17547,
              "nodeType": "Block",
              "src": "34023:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e742c626f6f6c29",
                            "id": 17539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34073:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e65658ca6578795ac405c3487ab68ec21d76f9a79d734a9ab869db5d96b4556b",
                              "typeString": "literal_string \"log(string,string,uint,bool)\""
                            },
                            "value": "log(string,string,uint,bool)"
                          },
                          {
                            "id": 17540,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17527,
                            "src": "34105:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17541,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17529,
                            "src": "34109:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17542,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17531,
                            "src": "34113:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17543,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17533,
                            "src": "34117:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e65658ca6578795ac405c3487ab68ec21d76f9a79d734a9ab869db5d96b4556b",
                              "typeString": "literal_string \"log(string,string,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17537,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34049:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34053:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34049:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17544,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34049:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17536,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "34033:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34033:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17546,
                  "nodeType": "ExpressionStatement",
                  "src": "34033:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "33951:3:15",
            "parameters": {
              "id": 17534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17527,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "33969:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17548,
                  "src": "33955:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17526,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33955:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17529,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "33987:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17548,
                  "src": "33973:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17528,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "33973:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17531,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "33996:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17548,
                  "src": "33991:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17530,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "33991:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17533,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34005:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17548,
                  "src": "34000:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17532,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "34000:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "33954:54:15"
            },
            "returnParameters": {
              "id": 17535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34023:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17571,
            "nodeType": "FunctionDefinition",
            "src": "34134:192:15",
            "nodes": [],
            "body": {
              "id": 17570,
              "nodeType": "Block",
              "src": "34218:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c75696e742c6164647265737329",
                            "id": 17562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34268:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5d4f46805293f3e84ba6dbfe353f76b3d1f1cfb2ff1e8024fb2adb45e2b7a128",
                              "typeString": "literal_string \"log(string,string,uint,address)\""
                            },
                            "value": "log(string,string,uint,address)"
                          },
                          {
                            "id": 17563,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17550,
                            "src": "34303:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17564,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17552,
                            "src": "34307:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17565,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17554,
                            "src": "34311:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17566,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17556,
                            "src": "34315:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5d4f46805293f3e84ba6dbfe353f76b3d1f1cfb2ff1e8024fb2adb45e2b7a128",
                              "typeString": "literal_string \"log(string,string,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17560,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34244:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34248:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34244:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34244:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17559,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "34228:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34228:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17569,
                  "nodeType": "ExpressionStatement",
                  "src": "34228:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34143:3:15",
            "parameters": {
              "id": 17557,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17550,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34161:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17571,
                  "src": "34147:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17549,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34147:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17552,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34179:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17571,
                  "src": "34165:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17551,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34165:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17554,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34188:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17571,
                  "src": "34183:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17553,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "34183:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17556,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34200:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17571,
                  "src": "34192:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17555,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "34192:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34146:57:15"
            },
            "returnParameters": {
              "id": 17558,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34218:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17594,
            "nodeType": "FunctionDefinition",
            "src": "34332:197:15",
            "nodes": [],
            "body": {
              "id": 17593,
              "nodeType": "Block",
              "src": "34422:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c75696e7429",
                            "id": 17585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34472:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9fd009f5f31a16d665d9be327a4a2b17dc428108ae31e46ab875e747b5ee155f",
                              "typeString": "literal_string \"log(string,string,string,uint)\""
                            },
                            "value": "log(string,string,string,uint)"
                          },
                          {
                            "id": 17586,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17573,
                            "src": "34506:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17587,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17575,
                            "src": "34510:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17588,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17577,
                            "src": "34514:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17589,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17579,
                            "src": "34518:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9fd009f5f31a16d665d9be327a4a2b17dc428108ae31e46ab875e747b5ee155f",
                              "typeString": "literal_string \"log(string,string,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17583,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34448:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34452:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34448:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34448:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17582,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "34432:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17591,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34432:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17592,
                  "nodeType": "ExpressionStatement",
                  "src": "34432:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34341:3:15",
            "parameters": {
              "id": 17580,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17573,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34359:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17594,
                  "src": "34345:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17572,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34345:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17575,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34377:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17594,
                  "src": "34363:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17574,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34363:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17577,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34395:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17594,
                  "src": "34381:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17576,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34381:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17579,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34404:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17594,
                  "src": "34399:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17578,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "34399:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34344:63:15"
            },
            "returnParameters": {
              "id": 17581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34422:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17617,
            "nodeType": "FunctionDefinition",
            "src": "34535:208:15",
            "nodes": [],
            "body": {
              "id": 17616,
              "nodeType": "Block",
              "src": "34634:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c737472696e6729",
                            "id": 17608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34684:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_de68f20a8e88f68d54c5aa294860ee37b58680632686e2f1101e4e042a2cbcbe",
                              "typeString": "literal_string \"log(string,string,string,string)\""
                            },
                            "value": "log(string,string,string,string)"
                          },
                          {
                            "id": 17609,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17596,
                            "src": "34720:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17610,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17598,
                            "src": "34724:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17611,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17600,
                            "src": "34728:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17612,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17602,
                            "src": "34732:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_de68f20a8e88f68d54c5aa294860ee37b58680632686e2f1101e4e042a2cbcbe",
                              "typeString": "literal_string \"log(string,string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17606,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34660:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34664:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34660:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34660:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17605,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "34644:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34644:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17615,
                  "nodeType": "ExpressionStatement",
                  "src": "34644:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34544:3:15",
            "parameters": {
              "id": 17603,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17596,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34562:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17617,
                  "src": "34548:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17595,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34548:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17598,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34580:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17617,
                  "src": "34566:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17597,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34566:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17600,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34598:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17617,
                  "src": "34584:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17599,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34584:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17602,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34616:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17617,
                  "src": "34602:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17601,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34602:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34547:72:15"
            },
            "returnParameters": {
              "id": 17604,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34634:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17640,
            "nodeType": "FunctionDefinition",
            "src": "34749:197:15",
            "nodes": [],
            "body": {
              "id": 17639,
              "nodeType": "Block",
              "src": "34839:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c626f6f6c29",
                            "id": 17631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "34889:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2c1754ed9d3bc50669c3e71e3115dc4403f3cff35aa9b6b58799f80b5496f332",
                              "typeString": "literal_string \"log(string,string,string,bool)\""
                            },
                            "value": "log(string,string,string,bool)"
                          },
                          {
                            "id": 17632,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17619,
                            "src": "34923:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17633,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17621,
                            "src": "34927:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17634,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17623,
                            "src": "34931:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17635,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17625,
                            "src": "34935:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2c1754ed9d3bc50669c3e71e3115dc4403f3cff35aa9b6b58799f80b5496f332",
                              "typeString": "literal_string \"log(string,string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17629,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "34865:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "34869:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "34865:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "34865:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17628,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "34849:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17637,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "34849:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17638,
                  "nodeType": "ExpressionStatement",
                  "src": "34849:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34758:3:15",
            "parameters": {
              "id": 17626,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17619,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34776:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17640,
                  "src": "34762:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17618,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34762:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17621,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34794:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17640,
                  "src": "34780:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17620,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34780:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17623,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "34812:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17640,
                  "src": "34798:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17622,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34798:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17625,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "34821:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17640,
                  "src": "34816:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17624,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "34816:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34761:63:15"
            },
            "returnParameters": {
              "id": 17627,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "34839:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17663,
            "nodeType": "FunctionDefinition",
            "src": "34952:203:15",
            "nodes": [],
            "body": {
              "id": 17662,
              "nodeType": "Block",
              "src": "35045:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c6164647265737329",
                            "id": 17654,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35095:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6d572f449cf1e446ea3ace51a34ce30628f4f1588a39dc5d550cefb210c5bb16",
                              "typeString": "literal_string \"log(string,string,string,address)\""
                            },
                            "value": "log(string,string,string,address)"
                          },
                          {
                            "id": 17655,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17642,
                            "src": "35132:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17656,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17644,
                            "src": "35136:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17657,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17646,
                            "src": "35140:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17658,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17648,
                            "src": "35144:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6d572f449cf1e446ea3ace51a34ce30628f4f1588a39dc5d550cefb210c5bb16",
                              "typeString": "literal_string \"log(string,string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17652,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35071:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35075:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35071:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17659,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35071:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17651,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "35055:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17660,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35055:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17661,
                  "nodeType": "ExpressionStatement",
                  "src": "35055:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "34961:3:15",
            "parameters": {
              "id": 17649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17642,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "34979:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17663,
                  "src": "34965:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17641,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34965:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17644,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "34997:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17663,
                  "src": "34983:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17643,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "34983:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17646,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35015:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17663,
                  "src": "35001:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17645,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35001:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17648,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35027:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17663,
                  "src": "35019:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17647,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "35019:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "34964:66:15"
            },
            "returnParameters": {
              "id": 17650,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35045:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17686,
            "nodeType": "FunctionDefinition",
            "src": "35161:186:15",
            "nodes": [],
            "body": {
              "id": 17685,
              "nodeType": "Block",
              "src": "35242:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c75696e7429",
                            "id": 17677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35292:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_86818a7aa9bc994aa800ce554e865f0047fd8aaa8799a458e8fea2db0986c5c1",
                              "typeString": "literal_string \"log(string,string,bool,uint)\""
                            },
                            "value": "log(string,string,bool,uint)"
                          },
                          {
                            "id": 17678,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17665,
                            "src": "35324:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17679,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17667,
                            "src": "35328:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17680,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17669,
                            "src": "35332:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17681,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17671,
                            "src": "35336:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_86818a7aa9bc994aa800ce554e865f0047fd8aaa8799a458e8fea2db0986c5c1",
                              "typeString": "literal_string \"log(string,string,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17675,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35268:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35272:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35268:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35268:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17674,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "35252:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35252:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17684,
                  "nodeType": "ExpressionStatement",
                  "src": "35252:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35170:3:15",
            "parameters": {
              "id": 17672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17665,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35188:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17686,
                  "src": "35174:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17664,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35174:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17667,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35206:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17686,
                  "src": "35192:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17666,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35192:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17669,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35215:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17686,
                  "src": "35210:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17668,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35210:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17671,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35224:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17686,
                  "src": "35219:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17670,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "35219:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35173:54:15"
            },
            "returnParameters": {
              "id": 17673,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35242:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17709,
            "nodeType": "FunctionDefinition",
            "src": "35353:197:15",
            "nodes": [],
            "body": {
              "id": 17708,
              "nodeType": "Block",
              "src": "35443:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c737472696e6729",
                            "id": 17700,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35493:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e84b0ea51a130c3c7e1443097f28cb5c541ea8487836ae7cb1ca9c6e683699b",
                              "typeString": "literal_string \"log(string,string,bool,string)\""
                            },
                            "value": "log(string,string,bool,string)"
                          },
                          {
                            "id": 17701,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17688,
                            "src": "35527:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17702,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17690,
                            "src": "35531:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17703,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17692,
                            "src": "35535:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17704,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17694,
                            "src": "35539:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5e84b0ea51a130c3c7e1443097f28cb5c541ea8487836ae7cb1ca9c6e683699b",
                              "typeString": "literal_string \"log(string,string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17698,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35469:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35473:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35469:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35469:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17697,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "35453:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35453:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17707,
                  "nodeType": "ExpressionStatement",
                  "src": "35453:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35362:3:15",
            "parameters": {
              "id": 17695,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17688,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35380:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17709,
                  "src": "35366:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17687,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35366:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17690,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35398:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17709,
                  "src": "35384:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17689,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35384:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17692,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35407:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17709,
                  "src": "35402:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17691,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35402:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17694,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35425:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17709,
                  "src": "35411:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17693,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35411:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35365:63:15"
            },
            "returnParameters": {
              "id": 17696,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35443:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17732,
            "nodeType": "FunctionDefinition",
            "src": "35556:186:15",
            "nodes": [],
            "body": {
              "id": 17731,
              "nodeType": "Block",
              "src": "35637:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c626f6f6c29",
                            "id": 17723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35687:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_40785869c0ea63ca2ccbcf7415552989c2f1ce04f151eb3b2bd695c64d21af10",
                              "typeString": "literal_string \"log(string,string,bool,bool)\""
                            },
                            "value": "log(string,string,bool,bool)"
                          },
                          {
                            "id": 17724,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17711,
                            "src": "35719:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17725,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17713,
                            "src": "35723:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17726,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17715,
                            "src": "35727:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17727,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17717,
                            "src": "35731:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_40785869c0ea63ca2ccbcf7415552989c2f1ce04f151eb3b2bd695c64d21af10",
                              "typeString": "literal_string \"log(string,string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17721,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35663:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35667:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35663:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17728,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35663:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17720,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "35647:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35647:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17730,
                  "nodeType": "ExpressionStatement",
                  "src": "35647:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35565:3:15",
            "parameters": {
              "id": 17718,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17711,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35583:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17732,
                  "src": "35569:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17710,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35569:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17713,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35601:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17732,
                  "src": "35587:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17712,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35587:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17715,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35610:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17732,
                  "src": "35605:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17714,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35605:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17717,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35619:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17732,
                  "src": "35614:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17716,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35614:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35568:54:15"
            },
            "returnParameters": {
              "id": 17719,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35637:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17755,
            "nodeType": "FunctionDefinition",
            "src": "35748:192:15",
            "nodes": [],
            "body": {
              "id": 17754,
              "nodeType": "Block",
              "src": "35832:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c6164647265737329",
                            "id": 17746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "35882:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c371c7db0a4b104babdbdf00d079eb75cb5aa1d401c4fb726c8e5559029df84d",
                              "typeString": "literal_string \"log(string,string,bool,address)\""
                            },
                            "value": "log(string,string,bool,address)"
                          },
                          {
                            "id": 17747,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17734,
                            "src": "35917:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17748,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17736,
                            "src": "35921:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17749,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17738,
                            "src": "35925:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17750,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17740,
                            "src": "35929:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c371c7db0a4b104babdbdf00d079eb75cb5aa1d401c4fb726c8e5559029df84d",
                              "typeString": "literal_string \"log(string,string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17744,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "35858:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "35862:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "35858:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "35858:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17743,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "35842:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "35842:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17753,
                  "nodeType": "ExpressionStatement",
                  "src": "35842:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35757:3:15",
            "parameters": {
              "id": 17741,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17734,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35775:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17755,
                  "src": "35761:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17733,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35761:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17736,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35793:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17755,
                  "src": "35779:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17735,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35779:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17738,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "35802:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17755,
                  "src": "35797:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17737,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "35797:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17740,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "35814:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17755,
                  "src": "35806:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17739,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "35806:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35760:57:15"
            },
            "returnParameters": {
              "id": 17742,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "35832:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17778,
            "nodeType": "FunctionDefinition",
            "src": "35946:192:15",
            "nodes": [],
            "body": {
              "id": 17777,
              "nodeType": "Block",
              "src": "36030:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c75696e7429",
                            "id": 17769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36080:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4a81a56a33247069679e8b6a463a3b29deb4b1020ce6e03b978132074cad28c2",
                              "typeString": "literal_string \"log(string,string,address,uint)\""
                            },
                            "value": "log(string,string,address,uint)"
                          },
                          {
                            "id": 17770,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17757,
                            "src": "36115:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17771,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17759,
                            "src": "36119:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17772,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17761,
                            "src": "36123:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17773,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17763,
                            "src": "36127:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4a81a56a33247069679e8b6a463a3b29deb4b1020ce6e03b978132074cad28c2",
                              "typeString": "literal_string \"log(string,string,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17767,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36056:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36060:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36056:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17774,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36056:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17766,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "36040:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17775,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36040:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17776,
                  "nodeType": "ExpressionStatement",
                  "src": "36040:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "35955:3:15",
            "parameters": {
              "id": 17764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17757,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "35973:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17778,
                  "src": "35959:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17756,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35959:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17759,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "35991:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17778,
                  "src": "35977:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17758,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "35977:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17761,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36003:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17778,
                  "src": "35995:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17760,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "35995:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17763,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36012:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17778,
                  "src": "36007:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17762,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "36007:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "35958:57:15"
            },
            "returnParameters": {
              "id": 17765,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36030:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17801,
            "nodeType": "FunctionDefinition",
            "src": "36144:203:15",
            "nodes": [],
            "body": {
              "id": 17800,
              "nodeType": "Block",
              "src": "36237:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c737472696e6729",
                            "id": 17792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36287:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb1bff805ef136c60bfed230c7b932a14c6f7a62608edeaf56f8f2c0575d25b6",
                              "typeString": "literal_string \"log(string,string,address,string)\""
                            },
                            "value": "log(string,string,address,string)"
                          },
                          {
                            "id": 17793,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17780,
                            "src": "36324:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17794,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17782,
                            "src": "36328:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17795,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17784,
                            "src": "36332:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17796,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17786,
                            "src": "36336:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_eb1bff805ef136c60bfed230c7b932a14c6f7a62608edeaf56f8f2c0575d25b6",
                              "typeString": "literal_string \"log(string,string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17790,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36263:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36267:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36263:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36263:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17789,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "36247:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17798,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36247:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17799,
                  "nodeType": "ExpressionStatement",
                  "src": "36247:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36153:3:15",
            "parameters": {
              "id": 17787,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17780,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36171:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17801,
                  "src": "36157:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17779,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36157:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17782,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36189:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17801,
                  "src": "36175:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17781,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36175:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17784,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36201:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17801,
                  "src": "36193:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17783,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "36193:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17786,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36219:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17801,
                  "src": "36205:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17785,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36205:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36156:66:15"
            },
            "returnParameters": {
              "id": 17788,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36237:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17824,
            "nodeType": "FunctionDefinition",
            "src": "36353:192:15",
            "nodes": [],
            "body": {
              "id": 17823,
              "nodeType": "Block",
              "src": "36437:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c626f6f6c29",
                            "id": 17815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36487:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5ccd4e373eb6ae26626c8607ae861c55cda5fd321363edde7e6328e09072ba63",
                              "typeString": "literal_string \"log(string,string,address,bool)\""
                            },
                            "value": "log(string,string,address,bool)"
                          },
                          {
                            "id": 17816,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17803,
                            "src": "36522:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17817,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17805,
                            "src": "36526:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17818,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17807,
                            "src": "36530:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17819,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17809,
                            "src": "36534:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5ccd4e373eb6ae26626c8607ae861c55cda5fd321363edde7e6328e09072ba63",
                              "typeString": "literal_string \"log(string,string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17813,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36463:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36467:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36463:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17820,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36463:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17812,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "36447:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17821,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36447:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17822,
                  "nodeType": "ExpressionStatement",
                  "src": "36447:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36362:3:15",
            "parameters": {
              "id": 17810,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17803,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36380:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17824,
                  "src": "36366:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17802,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36366:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17805,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36398:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17824,
                  "src": "36384:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17804,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36384:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17807,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36410:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17824,
                  "src": "36402:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17806,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "36402:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17809,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36419:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17824,
                  "src": "36414:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17808,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "36414:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36365:57:15"
            },
            "returnParameters": {
              "id": 17811,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36437:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17847,
            "nodeType": "FunctionDefinition",
            "src": "36551:198:15",
            "nodes": [],
            "body": {
              "id": 17846,
              "nodeType": "Block",
              "src": "36638:111:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c6164647265737329",
                            "id": 17838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36688:36:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_439c7befd1b6bfcb9bd001c1f3a991ef43c070f0ace0c190dd9f16d7ae338a5d",
                              "typeString": "literal_string \"log(string,string,address,address)\""
                            },
                            "value": "log(string,string,address,address)"
                          },
                          {
                            "id": 17839,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17826,
                            "src": "36726:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17840,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17828,
                            "src": "36730:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17841,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17830,
                            "src": "36734:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 17842,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17832,
                            "src": "36738:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_439c7befd1b6bfcb9bd001c1f3a991ef43c070f0ace0c190dd9f16d7ae338a5d",
                              "typeString": "literal_string \"log(string,string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17836,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36664:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36668:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36664:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17843,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36664:77:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17835,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "36648:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36648:94:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17845,
                  "nodeType": "ExpressionStatement",
                  "src": "36648:94:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36560:3:15",
            "parameters": {
              "id": 17833,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17826,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36578:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17847,
                  "src": "36564:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17825,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36564:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17828,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36596:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17847,
                  "src": "36582:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17827,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36582:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17830,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36608:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17847,
                  "src": "36600:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17829,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "36600:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17832,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36620:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17847,
                  "src": "36612:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17831,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "36612:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36563:60:15"
            },
            "returnParameters": {
              "id": 17834,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36638:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17870,
            "nodeType": "FunctionDefinition",
            "src": "36755:175:15",
            "nodes": [],
            "body": {
              "id": 17869,
              "nodeType": "Block",
              "src": "36827:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e742c75696e7429",
                            "id": 17861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "36877:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5dbff038873b5f716761e9dcaab0713a903ceaebb2ba8c30b199c4dc534f7701",
                              "typeString": "literal_string \"log(string,bool,uint,uint)\""
                            },
                            "value": "log(string,bool,uint,uint)"
                          },
                          {
                            "id": 17862,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17849,
                            "src": "36907:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17863,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17851,
                            "src": "36911:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17864,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17853,
                            "src": "36915:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17865,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17855,
                            "src": "36919:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5dbff038873b5f716761e9dcaab0713a903ceaebb2ba8c30b199c4dc534f7701",
                              "typeString": "literal_string \"log(string,bool,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17859,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "36853:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17860,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "36857:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "36853:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17866,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "36853:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17858,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "36837:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "36837:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17868,
                  "nodeType": "ExpressionStatement",
                  "src": "36837:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36764:3:15",
            "parameters": {
              "id": 17856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17849,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36782:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17870,
                  "src": "36768:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17848,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36768:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17851,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36791:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17870,
                  "src": "36786:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17850,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "36786:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17853,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36800:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17870,
                  "src": "36795:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17852,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "36795:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17855,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36809:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17870,
                  "src": "36804:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17854,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "36804:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36767:45:15"
            },
            "returnParameters": {
              "id": 17857,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "36827:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17893,
            "nodeType": "FunctionDefinition",
            "src": "36936:186:15",
            "nodes": [],
            "body": {
              "id": 17892,
              "nodeType": "Block",
              "src": "37017:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e742c737472696e6729",
                            "id": 17884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37067:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_42b9a2274d0e9ab9211da679bc79f433c4055060036260a350e95cf10b9004ee",
                              "typeString": "literal_string \"log(string,bool,uint,string)\""
                            },
                            "value": "log(string,bool,uint,string)"
                          },
                          {
                            "id": 17885,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17872,
                            "src": "37099:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17886,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17874,
                            "src": "37103:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17887,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17876,
                            "src": "37107:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17888,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17878,
                            "src": "37111:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_42b9a2274d0e9ab9211da679bc79f433c4055060036260a350e95cf10b9004ee",
                              "typeString": "literal_string \"log(string,bool,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17882,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37043:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37047:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37043:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17889,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37043:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17881,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "37027:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17890,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37027:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17891,
                  "nodeType": "ExpressionStatement",
                  "src": "37027:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "36945:3:15",
            "parameters": {
              "id": 17879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17872,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "36963:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17893,
                  "src": "36949:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17871,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36949:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17874,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "36972:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17893,
                  "src": "36967:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17873,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "36967:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17876,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "36981:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17893,
                  "src": "36976:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17875,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "36976:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17878,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "36999:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17893,
                  "src": "36985:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17877,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "36985:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "36948:54:15"
            },
            "returnParameters": {
              "id": 17880,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37017:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17916,
            "nodeType": "FunctionDefinition",
            "src": "37128:175:15",
            "nodes": [],
            "body": {
              "id": 17915,
              "nodeType": "Block",
              "src": "37200:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e742c626f6f6c29",
                            "id": 17907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37250:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3cc5b5d38fa67d61ad4f760e2dab344ea54d36d39a7b72ff747c1e117e2289bb",
                              "typeString": "literal_string \"log(string,bool,uint,bool)\""
                            },
                            "value": "log(string,bool,uint,bool)"
                          },
                          {
                            "id": 17908,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17895,
                            "src": "37280:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17909,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17897,
                            "src": "37284:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17910,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17899,
                            "src": "37288:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17911,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17901,
                            "src": "37292:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3cc5b5d38fa67d61ad4f760e2dab344ea54d36d39a7b72ff747c1e117e2289bb",
                              "typeString": "literal_string \"log(string,bool,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17905,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37226:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37230:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37226:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37226:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17904,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "37210:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17913,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37210:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17914,
                  "nodeType": "ExpressionStatement",
                  "src": "37210:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37137:3:15",
            "parameters": {
              "id": 17902,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17895,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37155:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17916,
                  "src": "37141:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17894,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37141:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17897,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37164:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17916,
                  "src": "37159:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17896,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37159:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17899,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37173:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17916,
                  "src": "37168:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17898,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "37168:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17901,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37182:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17916,
                  "src": "37177:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17900,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37177:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37140:45:15"
            },
            "returnParameters": {
              "id": 17903,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37200:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17939,
            "nodeType": "FunctionDefinition",
            "src": "37309:181:15",
            "nodes": [],
            "body": {
              "id": 17938,
              "nodeType": "Block",
              "src": "37384:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e742c6164647265737329",
                            "id": 17930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37434:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_71d3850da171f493bcf1bd9faa0694f71484214d8459bca427251a9ad3e9bbd6",
                              "typeString": "literal_string \"log(string,bool,uint,address)\""
                            },
                            "value": "log(string,bool,uint,address)"
                          },
                          {
                            "id": 17931,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17918,
                            "src": "37467:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17932,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17920,
                            "src": "37471:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17933,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17922,
                            "src": "37475:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 17934,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17924,
                            "src": "37479:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_71d3850da171f493bcf1bd9faa0694f71484214d8459bca427251a9ad3e9bbd6",
                              "typeString": "literal_string \"log(string,bool,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 17928,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37410:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37414:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37410:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37410:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17927,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "37394:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37394:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17937,
                  "nodeType": "ExpressionStatement",
                  "src": "37394:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37318:3:15",
            "parameters": {
              "id": 17925,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17918,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37336:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17939,
                  "src": "37322:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17917,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37322:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17920,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37345:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17939,
                  "src": "37340:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17919,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37340:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17922,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37354:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17939,
                  "src": "37349:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17921,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "37349:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17924,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37366:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17939,
                  "src": "37358:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17923,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "37358:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37321:48:15"
            },
            "returnParameters": {
              "id": 17926,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37384:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17962,
            "nodeType": "FunctionDefinition",
            "src": "37496:186:15",
            "nodes": [],
            "body": {
              "id": 17961,
              "nodeType": "Block",
              "src": "37577:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c75696e7429",
                            "id": 17953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37627:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_34cb308d42fc37e3a239bcd0d717cf3713a336733737bee1d82ac9061e969d72",
                              "typeString": "literal_string \"log(string,bool,string,uint)\""
                            },
                            "value": "log(string,bool,string,uint)"
                          },
                          {
                            "id": 17954,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17941,
                            "src": "37659:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17955,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17943,
                            "src": "37663:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17956,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17945,
                            "src": "37667:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17957,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17947,
                            "src": "37671:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_34cb308d42fc37e3a239bcd0d717cf3713a336733737bee1d82ac9061e969d72",
                              "typeString": "literal_string \"log(string,bool,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 17951,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37603:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37607:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37603:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37603:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17950,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "37587:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37587:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17960,
                  "nodeType": "ExpressionStatement",
                  "src": "37587:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37505:3:15",
            "parameters": {
              "id": 17948,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17941,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37523:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17962,
                  "src": "37509:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17940,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37509:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17943,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37532:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17962,
                  "src": "37527:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17942,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37527:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17945,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37550:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17962,
                  "src": "37536:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17944,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37536:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17947,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37559:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17962,
                  "src": "37554:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17946,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "37554:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37508:54:15"
            },
            "returnParameters": {
              "id": 17949,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37577:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 17985,
            "nodeType": "FunctionDefinition",
            "src": "37688:197:15",
            "nodes": [],
            "body": {
              "id": 17984,
              "nodeType": "Block",
              "src": "37778:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c737472696e6729",
                            "id": 17976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "37828:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a826caebc65f4a71211c1c7fd8dc9bdd856d7ef7dbeef42d8af156e9f73bc47d",
                              "typeString": "literal_string \"log(string,bool,string,string)\""
                            },
                            "value": "log(string,bool,string,string)"
                          },
                          {
                            "id": 17977,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17964,
                            "src": "37862:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17978,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17966,
                            "src": "37866:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 17979,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17968,
                            "src": "37870:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 17980,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17970,
                            "src": "37874:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a826caebc65f4a71211c1c7fd8dc9bdd856d7ef7dbeef42d8af156e9f73bc47d",
                              "typeString": "literal_string \"log(string,bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 17974,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37804:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "37808:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37804:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 17981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37804:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17973,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "37788:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 17982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37788:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17983,
                  "nodeType": "ExpressionStatement",
                  "src": "37788:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37697:3:15",
            "parameters": {
              "id": 17971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17964,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37715:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17985,
                  "src": "37701:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17963,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37701:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17966,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37724:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17985,
                  "src": "37719:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17965,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37719:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17968,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37742:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17985,
                  "src": "37728:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17967,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37728:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17970,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37760:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 17985,
                  "src": "37746:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17969,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37746:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37700:63:15"
            },
            "returnParameters": {
              "id": 17972,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37778:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18008,
            "nodeType": "FunctionDefinition",
            "src": "37891:186:15",
            "nodes": [],
            "body": {
              "id": 18007,
              "nodeType": "Block",
              "src": "37972:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c626f6f6c29",
                            "id": 17999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38022:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f8a701d00386d6ad9c7b7a930805b985bcbbe108e894a7d5cb9493e87e57e8b",
                              "typeString": "literal_string \"log(string,bool,string,bool)\""
                            },
                            "value": "log(string,bool,string,bool)"
                          },
                          {
                            "id": 18000,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17987,
                            "src": "38054:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18001,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17989,
                            "src": "38058:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18002,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17991,
                            "src": "38062:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18003,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17993,
                            "src": "38066:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3f8a701d00386d6ad9c7b7a930805b985bcbbe108e894a7d5cb9493e87e57e8b",
                              "typeString": "literal_string \"log(string,bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 17997,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "37998:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 17998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38002:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "37998:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18004,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "37998:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17996,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "37982:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18005,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "37982:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18006,
                  "nodeType": "ExpressionStatement",
                  "src": "37982:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "37900:3:15",
            "parameters": {
              "id": 17994,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17987,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "37918:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18008,
                  "src": "37904:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17986,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37904:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17989,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "37927:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18008,
                  "src": "37922:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17988,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37922:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17991,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "37945:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18008,
                  "src": "37931:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17990,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "37931:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17993,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "37954:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18008,
                  "src": "37949:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 17992,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "37949:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "37903:54:15"
            },
            "returnParameters": {
              "id": 17995,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "37972:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18031,
            "nodeType": "FunctionDefinition",
            "src": "38083:192:15",
            "nodes": [],
            "body": {
              "id": 18030,
              "nodeType": "Block",
              "src": "38167:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c6164647265737329",
                            "id": 18022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38217:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e0625b292fa5cbc865b55f61713cbbe0ce7abb244ec2df45291ea19c30ddfaf8",
                              "typeString": "literal_string \"log(string,bool,string,address)\""
                            },
                            "value": "log(string,bool,string,address)"
                          },
                          {
                            "id": 18023,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18010,
                            "src": "38252:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18024,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18012,
                            "src": "38256:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18025,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18014,
                            "src": "38260:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18026,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18016,
                            "src": "38264:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e0625b292fa5cbc865b55f61713cbbe0ce7abb244ec2df45291ea19c30ddfaf8",
                              "typeString": "literal_string \"log(string,bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18020,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38193:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38197:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38193:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38193:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18019,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "38177:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38177:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18029,
                  "nodeType": "ExpressionStatement",
                  "src": "38177:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38092:3:15",
            "parameters": {
              "id": 18017,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18010,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38110:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18031,
                  "src": "38096:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18009,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38096:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18012,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38119:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18031,
                  "src": "38114:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18011,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38114:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18014,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38137:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18031,
                  "src": "38123:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18013,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38123:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18016,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38149:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18031,
                  "src": "38141:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18015,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "38141:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38095:57:15"
            },
            "returnParameters": {
              "id": 18018,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38167:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18054,
            "nodeType": "FunctionDefinition",
            "src": "38281:175:15",
            "nodes": [],
            "body": {
              "id": 18053,
              "nodeType": "Block",
              "src": "38353:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c75696e7429",
                            "id": 18045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38403:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_807531e8eafdd7a15a803e586dd9a01b2aa8ae2cdd52f093775c0dcb0c977edf",
                              "typeString": "literal_string \"log(string,bool,bool,uint)\""
                            },
                            "value": "log(string,bool,bool,uint)"
                          },
                          {
                            "id": 18046,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18033,
                            "src": "38433:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18047,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18035,
                            "src": "38437:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18048,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18037,
                            "src": "38441:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18049,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18039,
                            "src": "38445:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_807531e8eafdd7a15a803e586dd9a01b2aa8ae2cdd52f093775c0dcb0c977edf",
                              "typeString": "literal_string \"log(string,bool,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18043,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38379:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38383:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38379:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18050,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38379:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18042,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "38363:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38363:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18052,
                  "nodeType": "ExpressionStatement",
                  "src": "38363:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38290:3:15",
            "parameters": {
              "id": 18040,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18033,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38308:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18054,
                  "src": "38294:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18032,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38294:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18035,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38317:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18054,
                  "src": "38312:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18034,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38312:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18037,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38326:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18054,
                  "src": "38321:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18036,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38321:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18039,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38335:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18054,
                  "src": "38330:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18038,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "38330:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38293:45:15"
            },
            "returnParameters": {
              "id": 18041,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38353:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18077,
            "nodeType": "FunctionDefinition",
            "src": "38462:186:15",
            "nodes": [],
            "body": {
              "id": 18076,
              "nodeType": "Block",
              "src": "38543:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 18068,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38593:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9d22d5dd5fa6b44920526f32944af8a0b12651bcfe7d5e4d9330573146eaf058",
                              "typeString": "literal_string \"log(string,bool,bool,string)\""
                            },
                            "value": "log(string,bool,bool,string)"
                          },
                          {
                            "id": 18069,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18056,
                            "src": "38625:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18070,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18058,
                            "src": "38629:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18071,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18060,
                            "src": "38633:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18072,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18062,
                            "src": "38637:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9d22d5dd5fa6b44920526f32944af8a0b12651bcfe7d5e4d9330573146eaf058",
                              "typeString": "literal_string \"log(string,bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18066,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38569:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38573:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38569:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18073,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38569:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18065,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "38553:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38553:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18075,
                  "nodeType": "ExpressionStatement",
                  "src": "38553:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38471:3:15",
            "parameters": {
              "id": 18063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18056,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38489:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18077,
                  "src": "38475:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18055,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38475:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18058,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38498:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18077,
                  "src": "38493:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18057,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38493:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18060,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38507:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18077,
                  "src": "38502:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18059,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38502:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18062,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38525:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18077,
                  "src": "38511:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18061,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38511:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38474:54:15"
            },
            "returnParameters": {
              "id": 18064,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38543:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18100,
            "nodeType": "FunctionDefinition",
            "src": "38654:175:15",
            "nodes": [],
            "body": {
              "id": 18099,
              "nodeType": "Block",
              "src": "38726:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 18091,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38776:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_895af8c5b50078ceec3119054e20583155eeb3e1a8f56b8ed56efbec57456ad2",
                              "typeString": "literal_string \"log(string,bool,bool,bool)\""
                            },
                            "value": "log(string,bool,bool,bool)"
                          },
                          {
                            "id": 18092,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18079,
                            "src": "38806:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18093,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18081,
                            "src": "38810:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18094,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18083,
                            "src": "38814:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18095,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18085,
                            "src": "38818:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_895af8c5b50078ceec3119054e20583155eeb3e1a8f56b8ed56efbec57456ad2",
                              "typeString": "literal_string \"log(string,bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18089,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38752:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38756:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38752:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38752:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18088,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "38736:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38736:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18098,
                  "nodeType": "ExpressionStatement",
                  "src": "38736:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38663:3:15",
            "parameters": {
              "id": 18086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18079,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38681:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18100,
                  "src": "38667:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18078,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38667:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18081,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38690:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18100,
                  "src": "38685:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18080,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38685:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18083,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38699:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18100,
                  "src": "38694:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18082,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38694:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18085,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38708:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18100,
                  "src": "38703:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18084,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38703:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38666:45:15"
            },
            "returnParameters": {
              "id": 18087,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38726:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18123,
            "nodeType": "FunctionDefinition",
            "src": "38835:181:15",
            "nodes": [],
            "body": {
              "id": 18122,
              "nodeType": "Block",
              "src": "38910:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 18114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "38960:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7190a529624f3e9168945b9053b9648f6439313f31cad0801b50f9dc38a45d4d",
                              "typeString": "literal_string \"log(string,bool,bool,address)\""
                            },
                            "value": "log(string,bool,bool,address)"
                          },
                          {
                            "id": 18115,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18102,
                            "src": "38993:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18116,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18104,
                            "src": "38997:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18117,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18106,
                            "src": "39001:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18118,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18108,
                            "src": "39005:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7190a529624f3e9168945b9053b9648f6439313f31cad0801b50f9dc38a45d4d",
                              "typeString": "literal_string \"log(string,bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18112,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "38936:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "38940:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "38936:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18119,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "38936:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18111,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "38920:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "38920:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18121,
                  "nodeType": "ExpressionStatement",
                  "src": "38920:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "38844:3:15",
            "parameters": {
              "id": 18109,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18102,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "38862:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18123,
                  "src": "38848:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18101,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "38848:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18104,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "38871:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18123,
                  "src": "38866:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18103,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38866:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18106,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "38880:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18123,
                  "src": "38875:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18105,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "38875:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18108,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "38892:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18123,
                  "src": "38884:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18107,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "38884:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "38847:48:15"
            },
            "returnParameters": {
              "id": 18110,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "38910:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18146,
            "nodeType": "FunctionDefinition",
            "src": "39022:181:15",
            "nodes": [],
            "body": {
              "id": 18145,
              "nodeType": "Block",
              "src": "39097:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c75696e7429",
                            "id": 18137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39147:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_28df4e96d50017c69e64253ea877c992512b689fb9fed17cf6af78f104f1200b",
                              "typeString": "literal_string \"log(string,bool,address,uint)\""
                            },
                            "value": "log(string,bool,address,uint)"
                          },
                          {
                            "id": 18138,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18125,
                            "src": "39180:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18139,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18127,
                            "src": "39184:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18140,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18129,
                            "src": "39188:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18141,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18131,
                            "src": "39192:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_28df4e96d50017c69e64253ea877c992512b689fb9fed17cf6af78f104f1200b",
                              "typeString": "literal_string \"log(string,bool,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18135,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39123:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39127:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39123:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39123:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18134,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "39107:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39107:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18144,
                  "nodeType": "ExpressionStatement",
                  "src": "39107:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39031:3:15",
            "parameters": {
              "id": 18132,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18125,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39049:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18146,
                  "src": "39035:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18124,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39035:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18127,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39058:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18146,
                  "src": "39053:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18126,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39053:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18129,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39070:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18146,
                  "src": "39062:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18128,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "39062:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18131,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39079:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18146,
                  "src": "39074:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18130,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "39074:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39034:48:15"
            },
            "returnParameters": {
              "id": 18133,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39097:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18169,
            "nodeType": "FunctionDefinition",
            "src": "39209:192:15",
            "nodes": [],
            "body": {
              "id": 18168,
              "nodeType": "Block",
              "src": "39293:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c737472696e6729",
                            "id": 18160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39343:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2d8e33a4e52268aad313274a8446eec6f40466a28da2456a8f12d83b298c13ef",
                              "typeString": "literal_string \"log(string,bool,address,string)\""
                            },
                            "value": "log(string,bool,address,string)"
                          },
                          {
                            "id": 18161,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18148,
                            "src": "39378:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18162,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18150,
                            "src": "39382:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18163,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18152,
                            "src": "39386:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18164,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18154,
                            "src": "39390:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2d8e33a4e52268aad313274a8446eec6f40466a28da2456a8f12d83b298c13ef",
                              "typeString": "literal_string \"log(string,bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18158,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39319:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39323:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39319:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39319:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18157,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "39303:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39303:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18167,
                  "nodeType": "ExpressionStatement",
                  "src": "39303:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39218:3:15",
            "parameters": {
              "id": 18155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18148,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39236:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18169,
                  "src": "39222:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18147,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39222:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18150,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39245:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18169,
                  "src": "39240:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18149,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39240:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18152,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39257:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18169,
                  "src": "39249:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18151,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "39249:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18154,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39275:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18169,
                  "src": "39261:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18153,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39261:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39221:57:15"
            },
            "returnParameters": {
              "id": 18156,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39293:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18192,
            "nodeType": "FunctionDefinition",
            "src": "39407:181:15",
            "nodes": [],
            "body": {
              "id": 18191,
              "nodeType": "Block",
              "src": "39482:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c626f6f6c29",
                            "id": 18183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39532:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_958c28c6e7bd79de7ce7f6f112cbcb194d9e383764dfb947492ee1374ff5c482",
                              "typeString": "literal_string \"log(string,bool,address,bool)\""
                            },
                            "value": "log(string,bool,address,bool)"
                          },
                          {
                            "id": 18184,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18171,
                            "src": "39565:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18185,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18173,
                            "src": "39569:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18186,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18175,
                            "src": "39573:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18187,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18177,
                            "src": "39577:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_958c28c6e7bd79de7ce7f6f112cbcb194d9e383764dfb947492ee1374ff5c482",
                              "typeString": "literal_string \"log(string,bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18181,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39508:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39512:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39508:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18188,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39508:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18180,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "39492:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39492:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18190,
                  "nodeType": "ExpressionStatement",
                  "src": "39492:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39416:3:15",
            "parameters": {
              "id": 18178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18171,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39434:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18192,
                  "src": "39420:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18170,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39420:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18173,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39443:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18192,
                  "src": "39438:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18172,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39438:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18175,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39455:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18192,
                  "src": "39447:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18174,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "39447:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18177,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39464:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18192,
                  "src": "39459:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18176,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39459:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39419:48:15"
            },
            "returnParameters": {
              "id": 18179,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39482:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18215,
            "nodeType": "FunctionDefinition",
            "src": "39594:187:15",
            "nodes": [],
            "body": {
              "id": 18214,
              "nodeType": "Block",
              "src": "39672:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c6164647265737329",
                            "id": 18206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39722:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_33e9dd1deb33816160eb59d86987de501b214bedbbe3c70103eff4092834b53d",
                              "typeString": "literal_string \"log(string,bool,address,address)\""
                            },
                            "value": "log(string,bool,address,address)"
                          },
                          {
                            "id": 18207,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18194,
                            "src": "39758:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18208,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18196,
                            "src": "39762:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18209,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18198,
                            "src": "39766:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18210,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18200,
                            "src": "39770:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_33e9dd1deb33816160eb59d86987de501b214bedbbe3c70103eff4092834b53d",
                              "typeString": "literal_string \"log(string,bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18204,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39698:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39702:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39698:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39698:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18203,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "39682:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39682:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18213,
                  "nodeType": "ExpressionStatement",
                  "src": "39682:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39603:3:15",
            "parameters": {
              "id": 18201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18194,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39621:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18215,
                  "src": "39607:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18193,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39607:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18196,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39630:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18215,
                  "src": "39625:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18195,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "39625:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18198,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39642:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18215,
                  "src": "39634:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18197,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "39634:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18200,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39654:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18215,
                  "src": "39646:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18199,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "39646:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39606:51:15"
            },
            "returnParameters": {
              "id": 18202,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39672:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18238,
            "nodeType": "FunctionDefinition",
            "src": "39787:181:15",
            "nodes": [],
            "body": {
              "id": 18237,
              "nodeType": "Block",
              "src": "39862:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e742c75696e7429",
                            "id": 18229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39912:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_daa394bd4914eaece965f4173c7699746dff411e470b03385f052bd7b13f1bd3",
                              "typeString": "literal_string \"log(string,address,uint,uint)\""
                            },
                            "value": "log(string,address,uint,uint)"
                          },
                          {
                            "id": 18230,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18217,
                            "src": "39945:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18231,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18219,
                            "src": "39949:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18232,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18221,
                            "src": "39953:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18233,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18223,
                            "src": "39957:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_daa394bd4914eaece965f4173c7699746dff411e470b03385f052bd7b13f1bd3",
                              "typeString": "literal_string \"log(string,address,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18227,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "39888:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "39892:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "39888:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "39888:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18226,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "39872:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "39872:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18236,
                  "nodeType": "ExpressionStatement",
                  "src": "39872:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39796:3:15",
            "parameters": {
              "id": 18224,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18217,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "39814:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18238,
                  "src": "39800:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18216,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39800:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18219,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "39826:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18238,
                  "src": "39818:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18218,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "39818:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18221,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "39835:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18238,
                  "src": "39830:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18220,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "39830:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18223,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "39844:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18238,
                  "src": "39839:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18222,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "39839:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39799:48:15"
            },
            "returnParameters": {
              "id": 18225,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "39862:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18261,
            "nodeType": "FunctionDefinition",
            "src": "39974:192:15",
            "nodes": [],
            "body": {
              "id": 18260,
              "nodeType": "Block",
              "src": "40058:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e742c737472696e6729",
                            "id": 18252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40108:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4c55f234d048f08e770926729ee5d8a9c70d6b9a607ce037165c7e0f36155a98",
                              "typeString": "literal_string \"log(string,address,uint,string)\""
                            },
                            "value": "log(string,address,uint,string)"
                          },
                          {
                            "id": 18253,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18240,
                            "src": "40143:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18254,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18242,
                            "src": "40147:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18255,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18244,
                            "src": "40151:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18256,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18246,
                            "src": "40155:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4c55f234d048f08e770926729ee5d8a9c70d6b9a607ce037165c7e0f36155a98",
                              "typeString": "literal_string \"log(string,address,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18250,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40084:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40088:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40084:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18257,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40084:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18249,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "40068:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18258,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40068:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18259,
                  "nodeType": "ExpressionStatement",
                  "src": "40068:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "39983:3:15",
            "parameters": {
              "id": 18247,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18240,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40001:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18261,
                  "src": "39987:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18239,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "39987:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18242,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40013:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18261,
                  "src": "40005:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18241,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40005:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18244,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40022:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18261,
                  "src": "40017:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18243,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "40017:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18246,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40040:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18261,
                  "src": "40026:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18245,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40026:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "39986:57:15"
            },
            "returnParameters": {
              "id": 18248,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40058:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18284,
            "nodeType": "FunctionDefinition",
            "src": "40172:181:15",
            "nodes": [],
            "body": {
              "id": 18283,
              "nodeType": "Block",
              "src": "40247:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e742c626f6f6c29",
                            "id": 18275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40297:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5ac1c13c91f65a91284d9d77ba7484e75b0a3dd9b57a01fd497babb7d6ebc554",
                              "typeString": "literal_string \"log(string,address,uint,bool)\""
                            },
                            "value": "log(string,address,uint,bool)"
                          },
                          {
                            "id": 18276,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18263,
                            "src": "40330:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18277,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18265,
                            "src": "40334:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18278,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18267,
                            "src": "40338:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18279,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18269,
                            "src": "40342:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5ac1c13c91f65a91284d9d77ba7484e75b0a3dd9b57a01fd497babb7d6ebc554",
                              "typeString": "literal_string \"log(string,address,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18273,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40273:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40277:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40273:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18280,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40273:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18272,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "40257:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18281,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40257:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18282,
                  "nodeType": "ExpressionStatement",
                  "src": "40257:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40181:3:15",
            "parameters": {
              "id": 18270,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18263,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40199:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18284,
                  "src": "40185:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18262,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40185:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18265,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40211:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18284,
                  "src": "40203:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18264,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40203:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18267,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40220:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18284,
                  "src": "40215:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18266,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "40215:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18269,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40229:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18284,
                  "src": "40224:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18268,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "40224:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40184:48:15"
            },
            "returnParameters": {
              "id": 18271,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40247:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18307,
            "nodeType": "FunctionDefinition",
            "src": "40359:187:15",
            "nodes": [],
            "body": {
              "id": 18306,
              "nodeType": "Block",
              "src": "40437:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c75696e742c6164647265737329",
                            "id": 18298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40487:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a366ec808c8af1aa091e8102642939a99436cf04d3dfac2ae23c299404f821b2",
                              "typeString": "literal_string \"log(string,address,uint,address)\""
                            },
                            "value": "log(string,address,uint,address)"
                          },
                          {
                            "id": 18299,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18286,
                            "src": "40523:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18300,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18288,
                            "src": "40527:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18301,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18290,
                            "src": "40531:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18302,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18292,
                            "src": "40535:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a366ec808c8af1aa091e8102642939a99436cf04d3dfac2ae23c299404f821b2",
                              "typeString": "literal_string \"log(string,address,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18296,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40463:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40467:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40463:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40463:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18295,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "40447:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40447:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18305,
                  "nodeType": "ExpressionStatement",
                  "src": "40447:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40368:3:15",
            "parameters": {
              "id": 18293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18286,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40386:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18307,
                  "src": "40372:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18285,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40372:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18288,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40398:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18307,
                  "src": "40390:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18287,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40390:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18290,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40407:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18307,
                  "src": "40402:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18289,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "40402:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18292,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40419:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18307,
                  "src": "40411:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40411:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40371:51:15"
            },
            "returnParameters": {
              "id": 18294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40437:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18330,
            "nodeType": "FunctionDefinition",
            "src": "40552:192:15",
            "nodes": [],
            "body": {
              "id": 18329,
              "nodeType": "Block",
              "src": "40636:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c75696e7429",
                            "id": 18321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40686:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8f624be9ea3983abac9c65ced8f562a492ebb84e6f74cd40f35387eff4d66349",
                              "typeString": "literal_string \"log(string,address,string,uint)\""
                            },
                            "value": "log(string,address,string,uint)"
                          },
                          {
                            "id": 18322,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18309,
                            "src": "40721:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18323,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18311,
                            "src": "40725:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18324,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18313,
                            "src": "40729:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18325,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18315,
                            "src": "40733:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8f624be9ea3983abac9c65ced8f562a492ebb84e6f74cd40f35387eff4d66349",
                              "typeString": "literal_string \"log(string,address,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18319,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40662:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40666:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40662:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40662:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18318,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "40646:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40646:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18328,
                  "nodeType": "ExpressionStatement",
                  "src": "40646:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40561:3:15",
            "parameters": {
              "id": 18316,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18309,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40579:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18330,
                  "src": "40565:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18308,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40565:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18311,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40591:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18330,
                  "src": "40583:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18310,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40583:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18313,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40609:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18330,
                  "src": "40595:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18312,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40595:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18315,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40618:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18330,
                  "src": "40613:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18314,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "40613:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40564:57:15"
            },
            "returnParameters": {
              "id": 18317,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40636:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18353,
            "nodeType": "FunctionDefinition",
            "src": "40750:203:15",
            "nodes": [],
            "body": {
              "id": 18352,
              "nodeType": "Block",
              "src": "40843:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c737472696e6729",
                            "id": 18344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "40893:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_245986f22170901865e76245a48ee28ce0127ca357f6ad576a72190e1d358797",
                              "typeString": "literal_string \"log(string,address,string,string)\""
                            },
                            "value": "log(string,address,string,string)"
                          },
                          {
                            "id": 18345,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18332,
                            "src": "40930:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18346,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18334,
                            "src": "40934:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18347,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18336,
                            "src": "40938:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18348,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18338,
                            "src": "40942:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_245986f22170901865e76245a48ee28ce0127ca357f6ad576a72190e1d358797",
                              "typeString": "literal_string \"log(string,address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18342,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "40869:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "40873:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "40869:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "40869:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18341,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "40853:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "40853:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18351,
                  "nodeType": "ExpressionStatement",
                  "src": "40853:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40759:3:15",
            "parameters": {
              "id": 18339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18332,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40777:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18353,
                  "src": "40763:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18331,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40763:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18334,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40789:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18353,
                  "src": "40781:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18333,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40781:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18336,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "40807:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18353,
                  "src": "40793:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18335,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40793:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18338,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "40825:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18353,
                  "src": "40811:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18337,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40811:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40762:66:15"
            },
            "returnParameters": {
              "id": 18340,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "40843:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18376,
            "nodeType": "FunctionDefinition",
            "src": "40959:192:15",
            "nodes": [],
            "body": {
              "id": 18375,
              "nodeType": "Block",
              "src": "41043:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c626f6f6c29",
                            "id": 18367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41093:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5f15d28c15ddff15fba1c00f6a4975ae6af8b36c9b2a875bf59bd45049046154",
                              "typeString": "literal_string \"log(string,address,string,bool)\""
                            },
                            "value": "log(string,address,string,bool)"
                          },
                          {
                            "id": 18368,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18355,
                            "src": "41128:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18369,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18357,
                            "src": "41132:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18370,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18359,
                            "src": "41136:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18371,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18361,
                            "src": "41140:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5f15d28c15ddff15fba1c00f6a4975ae6af8b36c9b2a875bf59bd45049046154",
                              "typeString": "literal_string \"log(string,address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18365,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41069:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41073:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41069:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41069:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18364,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "41053:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41053:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18374,
                  "nodeType": "ExpressionStatement",
                  "src": "41053:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "40968:3:15",
            "parameters": {
              "id": 18362,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18355,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "40986:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18376,
                  "src": "40972:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18354,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "40972:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18357,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "40998:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18376,
                  "src": "40990:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "40990:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18359,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41016:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18376,
                  "src": "41002:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41002:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18361,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41025:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18376,
                  "src": "41020:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18360,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41020:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "40971:57:15"
            },
            "returnParameters": {
              "id": 18363,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41043:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18399,
            "nodeType": "FunctionDefinition",
            "src": "41157:198:15",
            "nodes": [],
            "body": {
              "id": 18398,
              "nodeType": "Block",
              "src": "41244:111:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c6164647265737329",
                            "id": 18390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41294:36:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aabc9a311ab49789834b120d81155a7fee846a9f0d4f740bbeb970770190c82d",
                              "typeString": "literal_string \"log(string,address,string,address)\""
                            },
                            "value": "log(string,address,string,address)"
                          },
                          {
                            "id": 18391,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18378,
                            "src": "41332:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18392,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18380,
                            "src": "41336:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18393,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18382,
                            "src": "41340:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18394,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18384,
                            "src": "41344:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_aabc9a311ab49789834b120d81155a7fee846a9f0d4f740bbeb970770190c82d",
                              "typeString": "literal_string \"log(string,address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18388,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41270:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41274:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41270:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18395,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41270:77:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18387,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "41254:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41254:94:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18397,
                  "nodeType": "ExpressionStatement",
                  "src": "41254:94:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41166:3:15",
            "parameters": {
              "id": 18385,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18378,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41184:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18399,
                  "src": "41170:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18377,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41170:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18380,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41196:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18399,
                  "src": "41188:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18379,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41188:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18382,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41214:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18399,
                  "src": "41200:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18381,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41200:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18384,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41226:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18399,
                  "src": "41218:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18383,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41218:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41169:60:15"
            },
            "returnParameters": {
              "id": 18386,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41244:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18422,
            "nodeType": "FunctionDefinition",
            "src": "41361:181:15",
            "nodes": [],
            "body": {
              "id": 18421,
              "nodeType": "Block",
              "src": "41436:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c75696e7429",
                            "id": 18413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41486:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d1bb8ba57e795e9925065473f653a381a99be37bdcfbeaf49f38097f35af7f",
                              "typeString": "literal_string \"log(string,address,bool,uint)\""
                            },
                            "value": "log(string,address,bool,uint)"
                          },
                          {
                            "id": 18414,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18401,
                            "src": "41519:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18415,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18403,
                            "src": "41523:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18416,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18405,
                            "src": "41527:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18417,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18407,
                            "src": "41531:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c5d1bb8ba57e795e9925065473f653a381a99be37bdcfbeaf49f38097f35af7f",
                              "typeString": "literal_string \"log(string,address,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18411,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41462:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41466:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41462:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18418,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41462:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18410,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "41446:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41446:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18420,
                  "nodeType": "ExpressionStatement",
                  "src": "41446:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41370:3:15",
            "parameters": {
              "id": 18408,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18401,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41388:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18422,
                  "src": "41374:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18400,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41374:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18403,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41400:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18422,
                  "src": "41392:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18402,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41392:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18405,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41409:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18422,
                  "src": "41404:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18404,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41404:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18407,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41418:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18422,
                  "src": "41413:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18406,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "41413:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41373:48:15"
            },
            "returnParameters": {
              "id": 18409,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41436:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18445,
            "nodeType": "FunctionDefinition",
            "src": "41548:192:15",
            "nodes": [],
            "body": {
              "id": 18444,
              "nodeType": "Block",
              "src": "41632:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c737472696e6729",
                            "id": 18436,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41682:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0454c0793d4a41e5f630eb9a887926f8a67ff9e817a5feb968698354ac9d22fb",
                              "typeString": "literal_string \"log(string,address,bool,string)\""
                            },
                            "value": "log(string,address,bool,string)"
                          },
                          {
                            "id": 18437,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18424,
                            "src": "41717:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18438,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18426,
                            "src": "41721:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18439,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18428,
                            "src": "41725:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18440,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18430,
                            "src": "41729:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0454c0793d4a41e5f630eb9a887926f8a67ff9e817a5feb968698354ac9d22fb",
                              "typeString": "literal_string \"log(string,address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18434,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41658:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41662:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41658:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18441,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41658:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18433,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "41642:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41642:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18443,
                  "nodeType": "ExpressionStatement",
                  "src": "41642:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41557:3:15",
            "parameters": {
              "id": 18431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18424,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41575:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18445,
                  "src": "41561:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18423,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41561:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18426,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41587:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18445,
                  "src": "41579:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18425,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41579:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18428,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41596:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18445,
                  "src": "41591:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18427,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41591:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18430,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41614:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18445,
                  "src": "41600:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18429,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41600:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41560:57:15"
            },
            "returnParameters": {
              "id": 18432,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41632:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18468,
            "nodeType": "FunctionDefinition",
            "src": "41746:181:15",
            "nodes": [],
            "body": {
              "id": 18467,
              "nodeType": "Block",
              "src": "41821:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c626f6f6c29",
                            "id": 18459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "41871:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_79884c2bc85eb73c854df1610df373a05f191b834f79cd47a7ab28be2308c039",
                              "typeString": "literal_string \"log(string,address,bool,bool)\""
                            },
                            "value": "log(string,address,bool,bool)"
                          },
                          {
                            "id": 18460,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18447,
                            "src": "41904:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18461,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18449,
                            "src": "41908:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18462,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18451,
                            "src": "41912:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18463,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18453,
                            "src": "41916:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_79884c2bc85eb73c854df1610df373a05f191b834f79cd47a7ab28be2308c039",
                              "typeString": "literal_string \"log(string,address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18457,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "41847:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "41851:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "41847:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18464,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "41847:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18456,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "41831:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "41831:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18466,
                  "nodeType": "ExpressionStatement",
                  "src": "41831:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41755:3:15",
            "parameters": {
              "id": 18454,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18447,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41773:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18468,
                  "src": "41759:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18446,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41759:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18449,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41785:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18468,
                  "src": "41777:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18448,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41777:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18451,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41794:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18468,
                  "src": "41789:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18450,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41789:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18453,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41803:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18468,
                  "src": "41798:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18452,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41798:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41758:48:15"
            },
            "returnParameters": {
              "id": 18455,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "41821:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18491,
            "nodeType": "FunctionDefinition",
            "src": "41933:187:15",
            "nodes": [],
            "body": {
              "id": 18490,
              "nodeType": "Block",
              "src": "42011:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c6164647265737329",
                            "id": 18482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42061:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_223603bd064d72559a7d519ad0f1c6a8da707a49f5718dfa23a5ccb01bf9ab76",
                              "typeString": "literal_string \"log(string,address,bool,address)\""
                            },
                            "value": "log(string,address,bool,address)"
                          },
                          {
                            "id": 18483,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18470,
                            "src": "42097:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18484,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18472,
                            "src": "42101:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18485,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18474,
                            "src": "42105:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18486,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18476,
                            "src": "42109:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_223603bd064d72559a7d519ad0f1c6a8da707a49f5718dfa23a5ccb01bf9ab76",
                              "typeString": "literal_string \"log(string,address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18480,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42037:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42041:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42037:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42037:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18479,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "42021:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18488,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42021:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18489,
                  "nodeType": "ExpressionStatement",
                  "src": "42021:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "41942:3:15",
            "parameters": {
              "id": 18477,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18470,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "41960:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18491,
                  "src": "41946:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18469,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "41946:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18472,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "41972:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18491,
                  "src": "41964:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18471,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41964:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18474,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "41981:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18491,
                  "src": "41976:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18473,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "41976:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18476,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "41993:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18491,
                  "src": "41985:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18475,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "41985:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "41945:51:15"
            },
            "returnParameters": {
              "id": 18478,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42011:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18514,
            "nodeType": "FunctionDefinition",
            "src": "42126:187:15",
            "nodes": [],
            "body": {
              "id": 18513,
              "nodeType": "Block",
              "src": "42204:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c75696e7429",
                            "id": 18505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42254:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6eb7943d4272e495e7f5cdeb25ef89b9c3c1042d5c1e0e6e11a8fdc842ff5e02",
                              "typeString": "literal_string \"log(string,address,address,uint)\""
                            },
                            "value": "log(string,address,address,uint)"
                          },
                          {
                            "id": 18506,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18493,
                            "src": "42290:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18507,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18495,
                            "src": "42294:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18508,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18497,
                            "src": "42298:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18509,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18499,
                            "src": "42302:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6eb7943d4272e495e7f5cdeb25ef89b9c3c1042d5c1e0e6e11a8fdc842ff5e02",
                              "typeString": "literal_string \"log(string,address,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18503,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42230:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42234:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42230:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18510,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42230:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18502,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "42214:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42214:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18512,
                  "nodeType": "ExpressionStatement",
                  "src": "42214:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42135:3:15",
            "parameters": {
              "id": 18500,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18493,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42153:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18514,
                  "src": "42139:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18492,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42139:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18495,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42165:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18514,
                  "src": "42157:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18494,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42157:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18497,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42177:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18514,
                  "src": "42169:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18496,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42169:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18499,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42186:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18514,
                  "src": "42181:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18498,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "42181:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42138:51:15"
            },
            "returnParameters": {
              "id": 18501,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42204:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18537,
            "nodeType": "FunctionDefinition",
            "src": "42319:198:15",
            "nodes": [],
            "body": {
              "id": 18536,
              "nodeType": "Block",
              "src": "42406:111:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c737472696e6729",
                            "id": 18528,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42456:36:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_800a1c6756a402b6162ca8653fd8e87e2c52d1c019c876e92eb2980479636a76",
                              "typeString": "literal_string \"log(string,address,address,string)\""
                            },
                            "value": "log(string,address,address,string)"
                          },
                          {
                            "id": 18529,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18516,
                            "src": "42494:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18530,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18518,
                            "src": "42498:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18531,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18520,
                            "src": "42502:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18532,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18522,
                            "src": "42506:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_800a1c6756a402b6162ca8653fd8e87e2c52d1c019c876e92eb2980479636a76",
                              "typeString": "literal_string \"log(string,address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18526,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42432:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42436:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42432:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42432:77:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18525,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "42416:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18534,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42416:94:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18535,
                  "nodeType": "ExpressionStatement",
                  "src": "42416:94:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42328:3:15",
            "parameters": {
              "id": 18523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18516,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42346:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18537,
                  "src": "42332:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18515,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42332:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18518,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42358:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18537,
                  "src": "42350:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18517,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42350:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18520,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42370:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18537,
                  "src": "42362:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18519,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42362:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18522,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42388:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18537,
                  "src": "42374:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18521,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42374:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42331:60:15"
            },
            "returnParameters": {
              "id": 18524,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42406:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18560,
            "nodeType": "FunctionDefinition",
            "src": "42523:187:15",
            "nodes": [],
            "body": {
              "id": 18559,
              "nodeType": "Block",
              "src": "42601:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c626f6f6c29",
                            "id": 18551,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42651:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b59dbd60587b4eeae521d5427cbc88bff32729f88aff059e7deb0a3a4320aaf4",
                              "typeString": "literal_string \"log(string,address,address,bool)\""
                            },
                            "value": "log(string,address,address,bool)"
                          },
                          {
                            "id": 18552,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18539,
                            "src": "42687:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18553,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18541,
                            "src": "42691:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18554,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18543,
                            "src": "42695:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18555,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18545,
                            "src": "42699:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b59dbd60587b4eeae521d5427cbc88bff32729f88aff059e7deb0a3a4320aaf4",
                              "typeString": "literal_string \"log(string,address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18549,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42627:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42631:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42627:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42627:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18548,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "42611:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42611:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18558,
                  "nodeType": "ExpressionStatement",
                  "src": "42611:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42532:3:15",
            "parameters": {
              "id": 18546,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18539,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42550:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18560,
                  "src": "42536:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18538,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42536:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18541,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42562:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18560,
                  "src": "42554:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18540,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42554:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18543,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42574:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18560,
                  "src": "42566:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18542,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42566:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18545,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42583:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18560,
                  "src": "42578:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18544,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "42578:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42535:51:15"
            },
            "returnParameters": {
              "id": 18547,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42601:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18583,
            "nodeType": "FunctionDefinition",
            "src": "42716:193:15",
            "nodes": [],
            "body": {
              "id": 18582,
              "nodeType": "Block",
              "src": "42797:112:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c6164647265737329",
                            "id": 18574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "42847:37:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ed8f28f6f4b5d54b1d37f705e543f556805f28b9d1bb3aef0ef7e57ef4992d15",
                              "typeString": "literal_string \"log(string,address,address,address)\""
                            },
                            "value": "log(string,address,address,address)"
                          },
                          {
                            "id": 18575,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18562,
                            "src": "42886:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18576,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18564,
                            "src": "42890:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18577,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18566,
                            "src": "42894:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18578,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18568,
                            "src": "42898:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ed8f28f6f4b5d54b1d37f705e543f556805f28b9d1bb3aef0ef7e57ef4992d15",
                              "typeString": "literal_string \"log(string,address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18572,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "42823:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "42827:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "42823:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18579,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "42823:78:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18571,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "42807:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18580,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42807:95:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18581,
                  "nodeType": "ExpressionStatement",
                  "src": "42807:95:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42725:3:15",
            "parameters": {
              "id": 18569,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18562,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42743:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18583,
                  "src": "42729:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18561,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "42729:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18564,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42755:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18583,
                  "src": "42747:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18563,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42747:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18566,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42767:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18583,
                  "src": "42759:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18565,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42759:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18568,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42779:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18583,
                  "src": "42771:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18567,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "42771:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42728:54:15"
            },
            "returnParameters": {
              "id": 18570,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42797:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18606,
            "nodeType": "FunctionDefinition",
            "src": "42915:164:15",
            "nodes": [],
            "body": {
              "id": 18605,
              "nodeType": "Block",
              "src": "42978:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c75696e742c75696e7429",
                            "id": 18597,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43028:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_32dfa524f720faf836764864b46011dc5eb74e494d57e12b294a68048585d558",
                              "typeString": "literal_string \"log(bool,uint,uint,uint)\""
                            },
                            "value": "log(bool,uint,uint,uint)"
                          },
                          {
                            "id": 18598,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18585,
                            "src": "43056:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18599,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18587,
                            "src": "43060:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18600,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18589,
                            "src": "43064:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18601,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18591,
                            "src": "43068:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_32dfa524f720faf836764864b46011dc5eb74e494d57e12b294a68048585d558",
                              "typeString": "literal_string \"log(bool,uint,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18595,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43004:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43008:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43004:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18602,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43004:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18594,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "42988:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "42988:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18604,
                  "nodeType": "ExpressionStatement",
                  "src": "42988:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "42924:3:15",
            "parameters": {
              "id": 18592,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18585,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "42933:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18606,
                  "src": "42928:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18584,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "42928:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18587,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "42942:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18606,
                  "src": "42937:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18586,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "42937:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18589,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "42951:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18606,
                  "src": "42946:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18588,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "42946:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18591,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "42960:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18606,
                  "src": "42955:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18590,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "42955:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "42927:36:15"
            },
            "returnParameters": {
              "id": 18593,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "42978:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18629,
            "nodeType": "FunctionDefinition",
            "src": "43085:175:15",
            "nodes": [],
            "body": {
              "id": 18628,
              "nodeType": "Block",
              "src": "43157:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c75696e742c737472696e6729",
                            "id": 18620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43207:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_da0666c89b01999f5c8980ce90fe9d0a367a350fd8d2ec7d1f94587b6281ebd3",
                              "typeString": "literal_string \"log(bool,uint,uint,string)\""
                            },
                            "value": "log(bool,uint,uint,string)"
                          },
                          {
                            "id": 18621,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18608,
                            "src": "43237:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18622,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18610,
                            "src": "43241:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18623,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18612,
                            "src": "43245:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18624,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18614,
                            "src": "43249:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_da0666c89b01999f5c8980ce90fe9d0a367a350fd8d2ec7d1f94587b6281ebd3",
                              "typeString": "literal_string \"log(bool,uint,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18618,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43183:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18619,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43187:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43183:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43183:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18617,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "43167:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18626,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43167:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18627,
                  "nodeType": "ExpressionStatement",
                  "src": "43167:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43094:3:15",
            "parameters": {
              "id": 18615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18608,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43103:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18629,
                  "src": "43098:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18607,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43098:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18610,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43112:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18629,
                  "src": "43107:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18609,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43107:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18612,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43121:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18629,
                  "src": "43116:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18611,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43116:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18614,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43139:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18629,
                  "src": "43125:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18613,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43125:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43097:45:15"
            },
            "returnParameters": {
              "id": 18616,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43157:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18652,
            "nodeType": "FunctionDefinition",
            "src": "43266:164:15",
            "nodes": [],
            "body": {
              "id": 18651,
              "nodeType": "Block",
              "src": "43329:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c75696e742c626f6f6c29",
                            "id": 18643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43379:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a41d81dec511172fa866e067fea22fe074eb6260a116ec078e2e0e79a7fd8ef2",
                              "typeString": "literal_string \"log(bool,uint,uint,bool)\""
                            },
                            "value": "log(bool,uint,uint,bool)"
                          },
                          {
                            "id": 18644,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18631,
                            "src": "43407:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18645,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18633,
                            "src": "43411:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18646,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18635,
                            "src": "43415:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18647,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18637,
                            "src": "43419:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a41d81dec511172fa866e067fea22fe074eb6260a116ec078e2e0e79a7fd8ef2",
                              "typeString": "literal_string \"log(bool,uint,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18641,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43355:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43359:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43355:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43355:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18640,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "43339:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18649,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43339:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18650,
                  "nodeType": "ExpressionStatement",
                  "src": "43339:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43275:3:15",
            "parameters": {
              "id": 18638,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18631,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43284:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18652,
                  "src": "43279:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18630,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43279:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18633,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43293:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18652,
                  "src": "43288:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18632,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43288:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18635,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43302:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18652,
                  "src": "43297:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18634,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43297:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18637,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43311:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18652,
                  "src": "43306:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18636,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43306:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43278:36:15"
            },
            "returnParameters": {
              "id": 18639,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43329:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18675,
            "nodeType": "FunctionDefinition",
            "src": "43436:170:15",
            "nodes": [],
            "body": {
              "id": 18674,
              "nodeType": "Block",
              "src": "43502:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c75696e742c6164647265737329",
                            "id": 18666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43552:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f161b2216765f7746c6d62a843721a4e56fa83880464de0ff958770fd9704e33",
                              "typeString": "literal_string \"log(bool,uint,uint,address)\""
                            },
                            "value": "log(bool,uint,uint,address)"
                          },
                          {
                            "id": 18667,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18654,
                            "src": "43583:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18668,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18656,
                            "src": "43587:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18669,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18658,
                            "src": "43591:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18670,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18660,
                            "src": "43595:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f161b2216765f7746c6d62a843721a4e56fa83880464de0ff958770fd9704e33",
                              "typeString": "literal_string \"log(bool,uint,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18664,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43528:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43532:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43528:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18671,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43528:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18663,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "43512:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18672,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43512:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18673,
                  "nodeType": "ExpressionStatement",
                  "src": "43512:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43445:3:15",
            "parameters": {
              "id": 18661,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18654,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43454:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18675,
                  "src": "43449:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18653,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43449:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18656,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43463:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18675,
                  "src": "43458:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18655,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43458:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18658,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43472:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18675,
                  "src": "43467:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18657,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43467:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18660,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43484:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18675,
                  "src": "43476:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18659,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "43476:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43448:39:15"
            },
            "returnParameters": {
              "id": 18662,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43502:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18698,
            "nodeType": "FunctionDefinition",
            "src": "43612:175:15",
            "nodes": [],
            "body": {
              "id": 18697,
              "nodeType": "Block",
              "src": "43684:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e672c75696e7429",
                            "id": 18689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43734:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4180011b79de474cdb825b6c4cfbc6d05927b06d92ab7c90ba7ff48d251e1813",
                              "typeString": "literal_string \"log(bool,uint,string,uint)\""
                            },
                            "value": "log(bool,uint,string,uint)"
                          },
                          {
                            "id": 18690,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18677,
                            "src": "43764:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18691,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18679,
                            "src": "43768:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18692,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18681,
                            "src": "43772:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18693,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18683,
                            "src": "43776:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4180011b79de474cdb825b6c4cfbc6d05927b06d92ab7c90ba7ff48d251e1813",
                              "typeString": "literal_string \"log(bool,uint,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18687,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43710:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43714:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43710:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18694,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43710:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18686,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "43694:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18695,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43694:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18696,
                  "nodeType": "ExpressionStatement",
                  "src": "43694:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43621:3:15",
            "parameters": {
              "id": 18684,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18677,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43630:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18698,
                  "src": "43625:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18676,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43625:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18679,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43639:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18698,
                  "src": "43634:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18678,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43634:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18681,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43657:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18698,
                  "src": "43643:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18680,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43643:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18683,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43666:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18698,
                  "src": "43661:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18682,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43661:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43624:45:15"
            },
            "returnParameters": {
              "id": 18685,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43684:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18721,
            "nodeType": "FunctionDefinition",
            "src": "43793:186:15",
            "nodes": [],
            "body": {
              "id": 18720,
              "nodeType": "Block",
              "src": "43874:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e672c737472696e6729",
                            "id": 18712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43924:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d32a654812cf9bc5514c83d6adb00987a26a725c531c254b4dfe4eef4cdfc8ee",
                              "typeString": "literal_string \"log(bool,uint,string,string)\""
                            },
                            "value": "log(bool,uint,string,string)"
                          },
                          {
                            "id": 18713,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18700,
                            "src": "43956:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18714,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18702,
                            "src": "43960:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18715,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18704,
                            "src": "43964:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18716,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18706,
                            "src": "43968:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d32a654812cf9bc5514c83d6adb00987a26a725c531c254b4dfe4eef4cdfc8ee",
                              "typeString": "literal_string \"log(bool,uint,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18710,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "43900:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "43904:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "43900:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "43900:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18709,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "43884:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "43884:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18719,
                  "nodeType": "ExpressionStatement",
                  "src": "43884:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43802:3:15",
            "parameters": {
              "id": 18707,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18700,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "43811:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18721,
                  "src": "43806:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18699,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43806:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18702,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "43820:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18721,
                  "src": "43815:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18701,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "43815:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18704,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "43838:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18721,
                  "src": "43824:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18703,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43824:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18706,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "43856:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18721,
                  "src": "43842:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18705,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "43842:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43805:54:15"
            },
            "returnParameters": {
              "id": 18708,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "43874:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18744,
            "nodeType": "FunctionDefinition",
            "src": "43985:175:15",
            "nodes": [],
            "body": {
              "id": 18743,
              "nodeType": "Block",
              "src": "44057:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e672c626f6f6c29",
                            "id": 18735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44107:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_91d2f813beb255a90e7ea595fb27355b60d93c3f818aac6b4c27388d34e0ea16",
                              "typeString": "literal_string \"log(bool,uint,string,bool)\""
                            },
                            "value": "log(bool,uint,string,bool)"
                          },
                          {
                            "id": 18736,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18723,
                            "src": "44137:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18737,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18725,
                            "src": "44141:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18738,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18727,
                            "src": "44145:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18739,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18729,
                            "src": "44149:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_91d2f813beb255a90e7ea595fb27355b60d93c3f818aac6b4c27388d34e0ea16",
                              "typeString": "literal_string \"log(bool,uint,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18733,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44083:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18734,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44087:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44083:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44083:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18732,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "44067:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18741,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44067:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18742,
                  "nodeType": "ExpressionStatement",
                  "src": "44067:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "43994:3:15",
            "parameters": {
              "id": 18730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18723,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44003:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18744,
                  "src": "43998:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18722,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "43998:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18725,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44012:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18744,
                  "src": "44007:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18724,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "44007:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18727,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44030:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18744,
                  "src": "44016:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18726,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "44016:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18729,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44039:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18744,
                  "src": "44034:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18728,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44034:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "43997:45:15"
            },
            "returnParameters": {
              "id": 18731,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44057:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18767,
            "nodeType": "FunctionDefinition",
            "src": "44166:181:15",
            "nodes": [],
            "body": {
              "id": 18766,
              "nodeType": "Block",
              "src": "44241:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e672c6164647265737329",
                            "id": 18758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44291:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a5c70d29969a9ad21bdf8986348e5dc44eea151f64e0f90231a45219c4d0e3d5",
                              "typeString": "literal_string \"log(bool,uint,string,address)\""
                            },
                            "value": "log(bool,uint,string,address)"
                          },
                          {
                            "id": 18759,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18746,
                            "src": "44324:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18760,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18748,
                            "src": "44328:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18761,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18750,
                            "src": "44332:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18762,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18752,
                            "src": "44336:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a5c70d29969a9ad21bdf8986348e5dc44eea151f64e0f90231a45219c4d0e3d5",
                              "typeString": "literal_string \"log(bool,uint,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18756,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44267:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44271:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44267:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18763,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44267:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18755,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "44251:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18764,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44251:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18765,
                  "nodeType": "ExpressionStatement",
                  "src": "44251:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44175:3:15",
            "parameters": {
              "id": 18753,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18746,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44184:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18767,
                  "src": "44179:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18745,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44179:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18748,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44193:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18767,
                  "src": "44188:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18747,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "44188:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18750,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44211:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18767,
                  "src": "44197:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18749,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "44197:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18752,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44223:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18767,
                  "src": "44215:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18751,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44215:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44178:48:15"
            },
            "returnParameters": {
              "id": 18754,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44241:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18790,
            "nodeType": "FunctionDefinition",
            "src": "44353:164:15",
            "nodes": [],
            "body": {
              "id": 18789,
              "nodeType": "Block",
              "src": "44416:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c2c75696e7429",
                            "id": 18781,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44466:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d3de5593988099d08808f80d2a972ea3da18ecd746f0a3e437c530efaad65aa0",
                              "typeString": "literal_string \"log(bool,uint,bool,uint)\""
                            },
                            "value": "log(bool,uint,bool,uint)"
                          },
                          {
                            "id": 18782,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18769,
                            "src": "44494:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18783,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18771,
                            "src": "44498:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18784,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18773,
                            "src": "44502:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18785,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18775,
                            "src": "44506:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d3de5593988099d08808f80d2a972ea3da18ecd746f0a3e437c530efaad65aa0",
                              "typeString": "literal_string \"log(bool,uint,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18779,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44442:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18780,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44446:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44442:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18786,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44442:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18778,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "44426:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18787,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44426:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18788,
                  "nodeType": "ExpressionStatement",
                  "src": "44426:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44362:3:15",
            "parameters": {
              "id": 18776,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18769,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44371:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18790,
                  "src": "44366:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18768,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44366:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18771,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44380:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18790,
                  "src": "44375:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18770,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "44375:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18773,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44389:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18790,
                  "src": "44384:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18772,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44384:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18775,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44398:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18790,
                  "src": "44393:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18774,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "44393:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44365:36:15"
            },
            "returnParameters": {
              "id": 18777,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44416:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18813,
            "nodeType": "FunctionDefinition",
            "src": "44523:175:15",
            "nodes": [],
            "body": {
              "id": 18812,
              "nodeType": "Block",
              "src": "44595:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c2c737472696e6729",
                            "id": 18804,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44645:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b6d569d433e69694879a799e3777d59bc29ee89dcbaf739de9b283882fd259ad",
                              "typeString": "literal_string \"log(bool,uint,bool,string)\""
                            },
                            "value": "log(bool,uint,bool,string)"
                          },
                          {
                            "id": 18805,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18792,
                            "src": "44675:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18806,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18794,
                            "src": "44679:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18807,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18796,
                            "src": "44683:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18808,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18798,
                            "src": "44687:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b6d569d433e69694879a799e3777d59bc29ee89dcbaf739de9b283882fd259ad",
                              "typeString": "literal_string \"log(bool,uint,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18802,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44621:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44625:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44621:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18809,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44621:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18801,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "44605:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18810,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44605:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18811,
                  "nodeType": "ExpressionStatement",
                  "src": "44605:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44532:3:15",
            "parameters": {
              "id": 18799,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18792,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44541:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18813,
                  "src": "44536:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18791,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44536:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18794,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44550:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18813,
                  "src": "44545:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18793,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "44545:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18796,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44559:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18813,
                  "src": "44554:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18795,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44554:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18798,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44577:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18813,
                  "src": "44563:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18797,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "44563:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44535:45:15"
            },
            "returnParameters": {
              "id": 18800,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44595:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18836,
            "nodeType": "FunctionDefinition",
            "src": "44704:164:15",
            "nodes": [],
            "body": {
              "id": 18835,
              "nodeType": "Block",
              "src": "44767:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c2c626f6f6c29",
                            "id": 18827,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44817:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9e01f7417c5ff66a2399364b03788fbf8437045d38acf377fab727a3440df7be",
                              "typeString": "literal_string \"log(bool,uint,bool,bool)\""
                            },
                            "value": "log(bool,uint,bool,bool)"
                          },
                          {
                            "id": 18828,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18815,
                            "src": "44845:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18829,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18817,
                            "src": "44849:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18830,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18819,
                            "src": "44853:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18831,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18821,
                            "src": "44857:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9e01f7417c5ff66a2399364b03788fbf8437045d38acf377fab727a3440df7be",
                              "typeString": "literal_string \"log(bool,uint,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18825,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44793:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44797:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44793:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44793:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18824,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "44777:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18833,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44777:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18834,
                  "nodeType": "ExpressionStatement",
                  "src": "44777:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44713:3:15",
            "parameters": {
              "id": 18822,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18815,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44722:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18836,
                  "src": "44717:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18814,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44717:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18817,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44731:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18836,
                  "src": "44726:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18816,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "44726:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18819,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44740:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18836,
                  "src": "44735:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18818,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44735:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18821,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44749:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18836,
                  "src": "44744:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18820,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44744:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44716:36:15"
            },
            "returnParameters": {
              "id": 18823,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44767:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18859,
            "nodeType": "FunctionDefinition",
            "src": "44874:170:15",
            "nodes": [],
            "body": {
              "id": 18858,
              "nodeType": "Block",
              "src": "44940:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c2c6164647265737329",
                            "id": 18850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "44990:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4267c7f8f9987b1bc934e31e016f4d182f67ab95e55c5567fbc71b4f01a83f4b",
                              "typeString": "literal_string \"log(bool,uint,bool,address)\""
                            },
                            "value": "log(bool,uint,bool,address)"
                          },
                          {
                            "id": 18851,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18838,
                            "src": "45021:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18852,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18840,
                            "src": "45025:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18853,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18842,
                            "src": "45029:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18854,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18844,
                            "src": "45033:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4267c7f8f9987b1bc934e31e016f4d182f67ab95e55c5567fbc71b4f01a83f4b",
                              "typeString": "literal_string \"log(bool,uint,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18848,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "44966:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "44970:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "44966:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18855,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "44966:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18847,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "44950:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18856,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "44950:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18857,
                  "nodeType": "ExpressionStatement",
                  "src": "44950:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "44883:3:15",
            "parameters": {
              "id": 18845,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18838,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "44892:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18859,
                  "src": "44887:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18837,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44887:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18840,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "44901:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18859,
                  "src": "44896:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18839,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "44896:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18842,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "44910:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18859,
                  "src": "44905:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18841,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "44905:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18844,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "44922:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18859,
                  "src": "44914:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18843,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "44914:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "44886:39:15"
            },
            "returnParameters": {
              "id": 18846,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "44940:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18882,
            "nodeType": "FunctionDefinition",
            "src": "45050:170:15",
            "nodes": [],
            "body": {
              "id": 18881,
              "nodeType": "Block",
              "src": "45116:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c616464726573732c75696e7429",
                            "id": 18873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45166:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_caa5236acb25f4f5a01ec5f570d99d895d397c7e9fd20ed31c9c33fa8a17f26d",
                              "typeString": "literal_string \"log(bool,uint,address,uint)\""
                            },
                            "value": "log(bool,uint,address,uint)"
                          },
                          {
                            "id": 18874,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18861,
                            "src": "45197:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18875,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18863,
                            "src": "45201:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18876,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18865,
                            "src": "45205:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18877,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18867,
                            "src": "45209:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_caa5236acb25f4f5a01ec5f570d99d895d397c7e9fd20ed31c9c33fa8a17f26d",
                              "typeString": "literal_string \"log(bool,uint,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18871,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45142:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45146:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45142:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45142:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18870,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "45126:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45126:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18880,
                  "nodeType": "ExpressionStatement",
                  "src": "45126:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45059:3:15",
            "parameters": {
              "id": 18868,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18861,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45068:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18882,
                  "src": "45063:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18860,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45063:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18863,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45077:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18882,
                  "src": "45072:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18862,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "45072:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18865,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45089:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18882,
                  "src": "45081:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18864,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "45081:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18867,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45098:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18882,
                  "src": "45093:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18866,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "45093:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45062:39:15"
            },
            "returnParameters": {
              "id": 18869,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45116:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18905,
            "nodeType": "FunctionDefinition",
            "src": "45226:181:15",
            "nodes": [],
            "body": {
              "id": 18904,
              "nodeType": "Block",
              "src": "45301:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c616464726573732c737472696e6729",
                            "id": 18896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45351:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_180913415ccbde45e0d2184e3dd2387bed86df0066bd73fcb896bc02a6226689",
                              "typeString": "literal_string \"log(bool,uint,address,string)\""
                            },
                            "value": "log(bool,uint,address,string)"
                          },
                          {
                            "id": 18897,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18884,
                            "src": "45384:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18898,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18886,
                            "src": "45388:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18899,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18888,
                            "src": "45392:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18900,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18890,
                            "src": "45396:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_180913415ccbde45e0d2184e3dd2387bed86df0066bd73fcb896bc02a6226689",
                              "typeString": "literal_string \"log(bool,uint,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18894,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45327:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45331:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45327:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45327:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18893,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "45311:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45311:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18903,
                  "nodeType": "ExpressionStatement",
                  "src": "45311:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45235:3:15",
            "parameters": {
              "id": 18891,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18884,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45244:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18905,
                  "src": "45239:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18883,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45239:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18886,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45253:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18905,
                  "src": "45248:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18885,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "45248:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18888,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45265:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18905,
                  "src": "45257:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18887,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "45257:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18890,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45283:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18905,
                  "src": "45269:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18889,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "45269:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45238:48:15"
            },
            "returnParameters": {
              "id": 18892,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45301:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18928,
            "nodeType": "FunctionDefinition",
            "src": "45413:170:15",
            "nodes": [],
            "body": {
              "id": 18927,
              "nodeType": "Block",
              "src": "45479:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c616464726573732c626f6f6c29",
                            "id": 18919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45529:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_65adf4082cd731bd1252f957eddeecdbdcf11e48975b5ac20d902fcb218153fa",
                              "typeString": "literal_string \"log(bool,uint,address,bool)\""
                            },
                            "value": "log(bool,uint,address,bool)"
                          },
                          {
                            "id": 18920,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18907,
                            "src": "45560:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18921,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18909,
                            "src": "45564:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18922,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18911,
                            "src": "45568:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18923,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18913,
                            "src": "45572:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_65adf4082cd731bd1252f957eddeecdbdcf11e48975b5ac20d902fcb218153fa",
                              "typeString": "literal_string \"log(bool,uint,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 18917,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45505:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18918,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45509:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45505:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45505:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18916,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "45489:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45489:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18926,
                  "nodeType": "ExpressionStatement",
                  "src": "45489:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45422:3:15",
            "parameters": {
              "id": 18914,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18907,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45431:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18928,
                  "src": "45426:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18906,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45426:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18909,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45440:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18928,
                  "src": "45435:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18908,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "45435:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18911,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45452:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18928,
                  "src": "45444:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18910,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "45444:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18913,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45461:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18928,
                  "src": "45456:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18912,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45456:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45425:39:15"
            },
            "returnParameters": {
              "id": 18915,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45479:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18951,
            "nodeType": "FunctionDefinition",
            "src": "45589:176:15",
            "nodes": [],
            "body": {
              "id": 18950,
              "nodeType": "Block",
              "src": "45658:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c75696e742c616464726573732c6164647265737329",
                            "id": 18942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45708:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8a2f90aa07fc9781ea213028ce9aef0a44d6a31a77e2f4d54d97a0d808348d5d",
                              "typeString": "literal_string \"log(bool,uint,address,address)\""
                            },
                            "value": "log(bool,uint,address,address)"
                          },
                          {
                            "id": 18943,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18930,
                            "src": "45742:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18944,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18932,
                            "src": "45746:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18945,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18934,
                            "src": "45750:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 18946,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18936,
                            "src": "45754:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8a2f90aa07fc9781ea213028ce9aef0a44d6a31a77e2f4d54d97a0d808348d5d",
                              "typeString": "literal_string \"log(bool,uint,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 18940,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45684:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45688:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45684:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18947,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45684:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18939,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "45668:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18948,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45668:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18949,
                  "nodeType": "ExpressionStatement",
                  "src": "45668:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45598:3:15",
            "parameters": {
              "id": 18937,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18930,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45607:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18951,
                  "src": "45602:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18929,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45602:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18932,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45616:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18951,
                  "src": "45611:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18931,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "45611:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18934,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45628:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18951,
                  "src": "45620:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18933,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "45620:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18936,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45640:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18951,
                  "src": "45632:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18935,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "45632:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45601:42:15"
            },
            "returnParameters": {
              "id": 18938,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45658:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18974,
            "nodeType": "FunctionDefinition",
            "src": "45771:175:15",
            "nodes": [],
            "body": {
              "id": 18973,
              "nodeType": "Block",
              "src": "45843:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e742c75696e7429",
                            "id": 18965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "45893:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8e4ae86e71c7c77322d634e39fba7bc2a7e4fbe918bce10fe47326050a13b7c9",
                              "typeString": "literal_string \"log(bool,string,uint,uint)\""
                            },
                            "value": "log(bool,string,uint,uint)"
                          },
                          {
                            "id": 18966,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18953,
                            "src": "45923:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18967,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18955,
                            "src": "45927:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18968,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18957,
                            "src": "45931:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18969,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18959,
                            "src": "45935:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8e4ae86e71c7c77322d634e39fba7bc2a7e4fbe918bce10fe47326050a13b7c9",
                              "typeString": "literal_string \"log(bool,string,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 18963,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "45869:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "45873:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "45869:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18970,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "45869:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18962,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "45853:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18971,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "45853:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18972,
                  "nodeType": "ExpressionStatement",
                  "src": "45853:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45780:3:15",
            "parameters": {
              "id": 18960,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18953,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45789:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18974,
                  "src": "45784:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18952,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45784:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18955,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45807:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18974,
                  "src": "45793:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18954,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "45793:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18957,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45816:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18974,
                  "src": "45811:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18956,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "45811:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18959,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "45825:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18974,
                  "src": "45820:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18958,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "45820:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45783:45:15"
            },
            "returnParameters": {
              "id": 18961,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "45843:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 18997,
            "nodeType": "FunctionDefinition",
            "src": "45952:186:15",
            "nodes": [],
            "body": {
              "id": 18996,
              "nodeType": "Block",
              "src": "46033:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e742c737472696e6729",
                            "id": 18988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46083:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_77a1abed9f9fbc44023408083dd5c1cf42b0b566799470c6ab535b12d0f8f649",
                              "typeString": "literal_string \"log(bool,string,uint,string)\""
                            },
                            "value": "log(bool,string,uint,string)"
                          },
                          {
                            "id": 18989,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18976,
                            "src": "46115:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 18990,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18978,
                            "src": "46119:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 18991,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18980,
                            "src": "46123:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 18992,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18982,
                            "src": "46127:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_77a1abed9f9fbc44023408083dd5c1cf42b0b566799470c6ab535b12d0f8f649",
                              "typeString": "literal_string \"log(bool,string,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 18986,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46059:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 18987,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46063:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46059:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 18993,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46059:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 18985,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "46043:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 18994,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46043:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 18995,
                  "nodeType": "ExpressionStatement",
                  "src": "46043:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "45961:3:15",
            "parameters": {
              "id": 18983,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18976,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "45970:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18997,
                  "src": "45965:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18975,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "45965:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18978,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "45988:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18997,
                  "src": "45974:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18977,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "45974:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18980,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "45997:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18997,
                  "src": "45992:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18979,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "45992:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18982,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46015:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 18997,
                  "src": "46001:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 18981,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46001:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "45964:54:15"
            },
            "returnParameters": {
              "id": 18984,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46033:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19020,
            "nodeType": "FunctionDefinition",
            "src": "46144:175:15",
            "nodes": [],
            "body": {
              "id": 19019,
              "nodeType": "Block",
              "src": "46216:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e742c626f6f6c29",
                            "id": 19011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46266:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_20bbc9af7c6bae926ffd73678c9130310d497610a5c76e6e2ae48edff96f38a8",
                              "typeString": "literal_string \"log(bool,string,uint,bool)\""
                            },
                            "value": "log(bool,string,uint,bool)"
                          },
                          {
                            "id": 19012,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18999,
                            "src": "46296:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19013,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19001,
                            "src": "46300:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19014,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19003,
                            "src": "46304:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19015,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19005,
                            "src": "46308:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_20bbc9af7c6bae926ffd73678c9130310d497610a5c76e6e2ae48edff96f38a8",
                              "typeString": "literal_string \"log(bool,string,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19009,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46242:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46246:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46242:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46242:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19008,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "46226:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46226:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19018,
                  "nodeType": "ExpressionStatement",
                  "src": "46226:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46153:3:15",
            "parameters": {
              "id": 19006,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18999,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46162:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19020,
                  "src": "46157:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 18998,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46157:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19001,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46180:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19020,
                  "src": "46166:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19000,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46166:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19003,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46189:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19020,
                  "src": "46184:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19002,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "46184:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19005,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46198:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19020,
                  "src": "46193:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19004,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46193:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46156:45:15"
            },
            "returnParameters": {
              "id": 19007,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46216:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19043,
            "nodeType": "FunctionDefinition",
            "src": "46325:181:15",
            "nodes": [],
            "body": {
              "id": 19042,
              "nodeType": "Block",
              "src": "46400:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e742c6164647265737329",
                            "id": 19034,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46450:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5b22b938264abfc98de8ea025ac5bd87df03cbffd23b96cdfe194e0ef6fb136a",
                              "typeString": "literal_string \"log(bool,string,uint,address)\""
                            },
                            "value": "log(bool,string,uint,address)"
                          },
                          {
                            "id": 19035,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19022,
                            "src": "46483:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19036,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19024,
                            "src": "46487:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19037,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19026,
                            "src": "46491:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19038,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19028,
                            "src": "46495:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5b22b938264abfc98de8ea025ac5bd87df03cbffd23b96cdfe194e0ef6fb136a",
                              "typeString": "literal_string \"log(bool,string,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19032,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46426:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46430:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46426:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19039,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46426:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19031,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "46410:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19040,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46410:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19041,
                  "nodeType": "ExpressionStatement",
                  "src": "46410:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46334:3:15",
            "parameters": {
              "id": 19029,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19022,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46343:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19043,
                  "src": "46338:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19021,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46338:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19024,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46361:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19043,
                  "src": "46347:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19023,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46347:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19026,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46370:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19043,
                  "src": "46365:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19025,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "46365:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19028,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46382:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19043,
                  "src": "46374:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19027,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "46374:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46337:48:15"
            },
            "returnParameters": {
              "id": 19030,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46400:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19066,
            "nodeType": "FunctionDefinition",
            "src": "46512:186:15",
            "nodes": [],
            "body": {
              "id": 19065,
              "nodeType": "Block",
              "src": "46593:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c75696e7429",
                            "id": 19057,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46643:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5ddb259214a75c0fc75757e8e19b1cf1c4ec17a5eef635b4715f04b86884d5df",
                              "typeString": "literal_string \"log(bool,string,string,uint)\""
                            },
                            "value": "log(bool,string,string,uint)"
                          },
                          {
                            "id": 19058,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19045,
                            "src": "46675:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19059,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19047,
                            "src": "46679:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19060,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19049,
                            "src": "46683:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19061,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19051,
                            "src": "46687:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5ddb259214a75c0fc75757e8e19b1cf1c4ec17a5eef635b4715f04b86884d5df",
                              "typeString": "literal_string \"log(bool,string,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19055,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46619:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46623:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46619:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46619:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19054,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "46603:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46603:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19064,
                  "nodeType": "ExpressionStatement",
                  "src": "46603:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46521:3:15",
            "parameters": {
              "id": 19052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19045,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46530:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19066,
                  "src": "46525:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19044,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46525:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19047,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46548:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19066,
                  "src": "46534:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19046,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46534:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19049,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46566:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19066,
                  "src": "46552:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19048,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46552:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19051,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46575:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19066,
                  "src": "46570:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19050,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "46570:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46524:54:15"
            },
            "returnParameters": {
              "id": 19053,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46593:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19089,
            "nodeType": "FunctionDefinition",
            "src": "46704:197:15",
            "nodes": [],
            "body": {
              "id": 19088,
              "nodeType": "Block",
              "src": "46794:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c737472696e6729",
                            "id": 19080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "46844:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1762e32af9fa924f818d8f4a6c92011d30129df73749081e0b95feea819a17c9",
                              "typeString": "literal_string \"log(bool,string,string,string)\""
                            },
                            "value": "log(bool,string,string,string)"
                          },
                          {
                            "id": 19081,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19068,
                            "src": "46878:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19082,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19070,
                            "src": "46882:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19083,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19072,
                            "src": "46886:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19084,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19074,
                            "src": "46890:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1762e32af9fa924f818d8f4a6c92011d30129df73749081e0b95feea819a17c9",
                              "typeString": "literal_string \"log(bool,string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19078,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "46820:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "46824:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "46820:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "46820:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19077,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "46804:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46804:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19087,
                  "nodeType": "ExpressionStatement",
                  "src": "46804:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46713:3:15",
            "parameters": {
              "id": 19075,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19068,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46722:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19089,
                  "src": "46717:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19067,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46717:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19070,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46740:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19089,
                  "src": "46726:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19069,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46726:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19072,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46758:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19089,
                  "src": "46744:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19071,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46744:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19074,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46776:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19089,
                  "src": "46762:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19073,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46762:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46716:63:15"
            },
            "returnParameters": {
              "id": 19076,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46794:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19112,
            "nodeType": "FunctionDefinition",
            "src": "46907:186:15",
            "nodes": [],
            "body": {
              "id": 19111,
              "nodeType": "Block",
              "src": "46988:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c626f6f6c29",
                            "id": 19103,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47038:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1e4b87e52d13efc5b368defba0463e423637ec55125c6230945d005f817198d1",
                              "typeString": "literal_string \"log(bool,string,string,bool)\""
                            },
                            "value": "log(bool,string,string,bool)"
                          },
                          {
                            "id": 19104,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19091,
                            "src": "47070:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19105,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19093,
                            "src": "47074:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19106,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19095,
                            "src": "47078:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19107,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19097,
                            "src": "47082:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1e4b87e52d13efc5b368defba0463e423637ec55125c6230945d005f817198d1",
                              "typeString": "literal_string \"log(bool,string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19101,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47014:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47018:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47014:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47014:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19100,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "46998:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "46998:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19110,
                  "nodeType": "ExpressionStatement",
                  "src": "46998:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "46916:3:15",
            "parameters": {
              "id": 19098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19091,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "46925:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19112,
                  "src": "46920:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19090,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46920:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19093,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "46943:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19112,
                  "src": "46929:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19092,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46929:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19095,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "46961:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19112,
                  "src": "46947:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19094,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "46947:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19097,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "46970:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19112,
                  "src": "46965:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19096,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "46965:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "46919:54:15"
            },
            "returnParameters": {
              "id": 19099,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "46988:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19135,
            "nodeType": "FunctionDefinition",
            "src": "47099:192:15",
            "nodes": [],
            "body": {
              "id": 19134,
              "nodeType": "Block",
              "src": "47183:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c6164647265737329",
                            "id": 19126,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47233:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_97d394d89551bd441d1340d1c3dcc3b6160871bf042c6884bcb4049b2fa2bdb5",
                              "typeString": "literal_string \"log(bool,string,string,address)\""
                            },
                            "value": "log(bool,string,string,address)"
                          },
                          {
                            "id": 19127,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19114,
                            "src": "47268:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19128,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19116,
                            "src": "47272:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19129,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19118,
                            "src": "47276:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19130,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19120,
                            "src": "47280:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_97d394d89551bd441d1340d1c3dcc3b6160871bf042c6884bcb4049b2fa2bdb5",
                              "typeString": "literal_string \"log(bool,string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19124,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47209:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47213:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47209:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47209:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19123,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "47193:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19132,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47193:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19133,
                  "nodeType": "ExpressionStatement",
                  "src": "47193:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47108:3:15",
            "parameters": {
              "id": 19121,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19114,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47117:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19135,
                  "src": "47112:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19113,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47112:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19116,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47135:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19135,
                  "src": "47121:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19115,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47121:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19118,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47153:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19135,
                  "src": "47139:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19117,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47139:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19120,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47165:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19135,
                  "src": "47157:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19119,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "47157:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47111:57:15"
            },
            "returnParameters": {
              "id": 19122,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47183:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19158,
            "nodeType": "FunctionDefinition",
            "src": "47297:175:15",
            "nodes": [],
            "body": {
              "id": 19157,
              "nodeType": "Block",
              "src": "47369:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c75696e7429",
                            "id": 19149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47419:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8d6f9ca539d16169f184b68d5f2cbc34ada538d6737083559aa5a96068582055",
                              "typeString": "literal_string \"log(bool,string,bool,uint)\""
                            },
                            "value": "log(bool,string,bool,uint)"
                          },
                          {
                            "id": 19150,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19137,
                            "src": "47449:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19151,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19139,
                            "src": "47453:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19152,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19141,
                            "src": "47457:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19153,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19143,
                            "src": "47461:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8d6f9ca539d16169f184b68d5f2cbc34ada538d6737083559aa5a96068582055",
                              "typeString": "literal_string \"log(bool,string,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19147,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47395:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47399:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47395:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47395:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19146,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "47379:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47379:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19156,
                  "nodeType": "ExpressionStatement",
                  "src": "47379:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47306:3:15",
            "parameters": {
              "id": 19144,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19137,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47315:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19158,
                  "src": "47310:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19136,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47310:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19139,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47333:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19158,
                  "src": "47319:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19138,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47319:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19141,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47342:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19158,
                  "src": "47337:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19140,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47337:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19143,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47351:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19158,
                  "src": "47346:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19142,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "47346:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47309:45:15"
            },
            "returnParameters": {
              "id": 19145,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47369:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19181,
            "nodeType": "FunctionDefinition",
            "src": "47478:186:15",
            "nodes": [],
            "body": {
              "id": 19180,
              "nodeType": "Block",
              "src": "47559:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c737472696e6729",
                            "id": 19172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47609:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_483d0416329d0c81c68975a0cac822497c590c00f8ae8be66af490d0f9215468",
                              "typeString": "literal_string \"log(bool,string,bool,string)\""
                            },
                            "value": "log(bool,string,bool,string)"
                          },
                          {
                            "id": 19173,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19160,
                            "src": "47641:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19174,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19162,
                            "src": "47645:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19175,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19164,
                            "src": "47649:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19176,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19166,
                            "src": "47653:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_483d0416329d0c81c68975a0cac822497c590c00f8ae8be66af490d0f9215468",
                              "typeString": "literal_string \"log(bool,string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19170,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47585:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47589:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47585:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47585:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19169,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "47569:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47569:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19179,
                  "nodeType": "ExpressionStatement",
                  "src": "47569:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47487:3:15",
            "parameters": {
              "id": 19167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19160,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47496:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19181,
                  "src": "47491:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19159,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47491:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19162,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47514:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19181,
                  "src": "47500:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19161,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47500:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19164,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47523:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19181,
                  "src": "47518:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19163,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47518:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19166,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47541:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19181,
                  "src": "47527:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19165,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47527:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47490:54:15"
            },
            "returnParameters": {
              "id": 19168,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47559:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19204,
            "nodeType": "FunctionDefinition",
            "src": "47670:175:15",
            "nodes": [],
            "body": {
              "id": 19203,
              "nodeType": "Block",
              "src": "47742:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c626f6f6c29",
                            "id": 19195,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47792:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dc5e935b9ccf45ff13b5900aeaf3a593df3e9479fc07e9c213f5fcaa0951e91f",
                              "typeString": "literal_string \"log(bool,string,bool,bool)\""
                            },
                            "value": "log(bool,string,bool,bool)"
                          },
                          {
                            "id": 19196,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19183,
                            "src": "47822:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19197,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19185,
                            "src": "47826:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19198,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19187,
                            "src": "47830:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19199,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19189,
                            "src": "47834:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dc5e935b9ccf45ff13b5900aeaf3a593df3e9479fc07e9c213f5fcaa0951e91f",
                              "typeString": "literal_string \"log(bool,string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19193,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47768:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47772:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47768:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47768:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19192,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "47752:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19201,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47752:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19202,
                  "nodeType": "ExpressionStatement",
                  "src": "47752:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47679:3:15",
            "parameters": {
              "id": 19190,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19183,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47688:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19204,
                  "src": "47683:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19182,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47683:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19185,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47706:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19204,
                  "src": "47692:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19184,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47692:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19187,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47715:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19204,
                  "src": "47710:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19186,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47710:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19189,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47724:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19204,
                  "src": "47719:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19188,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47719:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47682:45:15"
            },
            "returnParameters": {
              "id": 19191,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47742:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19227,
            "nodeType": "FunctionDefinition",
            "src": "47851:181:15",
            "nodes": [],
            "body": {
              "id": 19226,
              "nodeType": "Block",
              "src": "47926:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c6164647265737329",
                            "id": 19218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "47976:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_538e06ab06366b189ea53da7c11628ee5730bc373b0bc64719bea1a2afab03c5",
                              "typeString": "literal_string \"log(bool,string,bool,address)\""
                            },
                            "value": "log(bool,string,bool,address)"
                          },
                          {
                            "id": 19219,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19206,
                            "src": "48009:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19220,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19208,
                            "src": "48013:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19221,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19210,
                            "src": "48017:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19222,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19212,
                            "src": "48021:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_538e06ab06366b189ea53da7c11628ee5730bc373b0bc64719bea1a2afab03c5",
                              "typeString": "literal_string \"log(bool,string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19216,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "47952:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "47956:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "47952:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "47952:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19215,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "47936:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19224,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "47936:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19225,
                  "nodeType": "ExpressionStatement",
                  "src": "47936:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "47860:3:15",
            "parameters": {
              "id": 19213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19206,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "47869:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19227,
                  "src": "47864:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19205,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47864:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19208,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "47887:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19227,
                  "src": "47873:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19207,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "47873:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19210,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "47896:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19227,
                  "src": "47891:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19209,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "47891:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19212,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "47908:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19227,
                  "src": "47900:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19211,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "47900:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "47863:48:15"
            },
            "returnParameters": {
              "id": 19214,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "47926:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19250,
            "nodeType": "FunctionDefinition",
            "src": "48038:181:15",
            "nodes": [],
            "body": {
              "id": 19249,
              "nodeType": "Block",
              "src": "48113:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c75696e7429",
                            "id": 19241,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48163:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1b0b955b558cd224468bb20ba92b23519cb59fe363a105b00d7a815c1673c4ca",
                              "typeString": "literal_string \"log(bool,string,address,uint)\""
                            },
                            "value": "log(bool,string,address,uint)"
                          },
                          {
                            "id": 19242,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19229,
                            "src": "48196:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19243,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19231,
                            "src": "48200:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19244,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19233,
                            "src": "48204:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19245,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19235,
                            "src": "48208:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1b0b955b558cd224468bb20ba92b23519cb59fe363a105b00d7a815c1673c4ca",
                              "typeString": "literal_string \"log(bool,string,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19239,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48139:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48143:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48139:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48139:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19238,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "48123:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48123:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19248,
                  "nodeType": "ExpressionStatement",
                  "src": "48123:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48047:3:15",
            "parameters": {
              "id": 19236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19229,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48056:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19250,
                  "src": "48051:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19228,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48051:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19231,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48074:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19250,
                  "src": "48060:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19230,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48060:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19233,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48086:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19250,
                  "src": "48078:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19232,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "48078:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19235,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48095:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19250,
                  "src": "48090:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19234,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "48090:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48050:48:15"
            },
            "returnParameters": {
              "id": 19237,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48113:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19273,
            "nodeType": "FunctionDefinition",
            "src": "48225:192:15",
            "nodes": [],
            "body": {
              "id": 19272,
              "nodeType": "Block",
              "src": "48309:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c737472696e6729",
                            "id": 19264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48359:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_12d6c788fea4d6144f2607e1e8821bec55a5c2dfdc4cece41a536f7b7831e7a7",
                              "typeString": "literal_string \"log(bool,string,address,string)\""
                            },
                            "value": "log(bool,string,address,string)"
                          },
                          {
                            "id": 19265,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19252,
                            "src": "48394:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19266,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19254,
                            "src": "48398:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19267,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19256,
                            "src": "48402:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19268,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19258,
                            "src": "48406:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_12d6c788fea4d6144f2607e1e8821bec55a5c2dfdc4cece41a536f7b7831e7a7",
                              "typeString": "literal_string \"log(bool,string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19262,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48335:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48339:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48335:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48335:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19261,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "48319:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19270,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48319:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19271,
                  "nodeType": "ExpressionStatement",
                  "src": "48319:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48234:3:15",
            "parameters": {
              "id": 19259,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19252,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48243:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19273,
                  "src": "48238:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19251,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48238:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19254,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48261:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19273,
                  "src": "48247:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19253,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48247:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19256,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48273:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19273,
                  "src": "48265:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19255,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "48265:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19258,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48291:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19273,
                  "src": "48277:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19257,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48277:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48237:57:15"
            },
            "returnParameters": {
              "id": 19260,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48309:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19296,
            "nodeType": "FunctionDefinition",
            "src": "48423:181:15",
            "nodes": [],
            "body": {
              "id": 19295,
              "nodeType": "Block",
              "src": "48498:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c626f6f6c29",
                            "id": 19287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48548:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6dd434ca1fa26d491bcd72b7fe69eb72d41cae8eadbda5a7f985734e1b80c67d",
                              "typeString": "literal_string \"log(bool,string,address,bool)\""
                            },
                            "value": "log(bool,string,address,bool)"
                          },
                          {
                            "id": 19288,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19275,
                            "src": "48581:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19289,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19277,
                            "src": "48585:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19290,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19279,
                            "src": "48589:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19291,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19281,
                            "src": "48593:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6dd434ca1fa26d491bcd72b7fe69eb72d41cae8eadbda5a7f985734e1b80c67d",
                              "typeString": "literal_string \"log(bool,string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19285,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48524:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19286,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48528:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48524:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19292,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48524:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19284,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "48508:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19293,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48508:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19294,
                  "nodeType": "ExpressionStatement",
                  "src": "48508:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48432:3:15",
            "parameters": {
              "id": 19282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19275,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48441:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19296,
                  "src": "48436:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19274,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48436:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19277,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48459:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19296,
                  "src": "48445:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19276,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48445:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19279,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48471:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19296,
                  "src": "48463:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19278,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "48463:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19281,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48480:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19296,
                  "src": "48475:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19280,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48475:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48435:48:15"
            },
            "returnParameters": {
              "id": 19283,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48498:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19319,
            "nodeType": "FunctionDefinition",
            "src": "48610:187:15",
            "nodes": [],
            "body": {
              "id": 19318,
              "nodeType": "Block",
              "src": "48688:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c6164647265737329",
                            "id": 19310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48738:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2b2b18dc50ecc75180f201de41eca533fbda0c7bf525c06b5b8e87bc1d010822",
                              "typeString": "literal_string \"log(bool,string,address,address)\""
                            },
                            "value": "log(bool,string,address,address)"
                          },
                          {
                            "id": 19311,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19298,
                            "src": "48774:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19312,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19300,
                            "src": "48778:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19313,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19302,
                            "src": "48782:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19314,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19304,
                            "src": "48786:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2b2b18dc50ecc75180f201de41eca533fbda0c7bf525c06b5b8e87bc1d010822",
                              "typeString": "literal_string \"log(bool,string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19308,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48714:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48718:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48714:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48714:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19307,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "48698:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48698:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19317,
                  "nodeType": "ExpressionStatement",
                  "src": "48698:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48619:3:15",
            "parameters": {
              "id": 19305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19298,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48628:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19319,
                  "src": "48623:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19297,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48623:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19300,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48646:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19319,
                  "src": "48632:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19299,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "48632:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19302,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48658:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19319,
                  "src": "48650:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19301,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "48650:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19304,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48670:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19319,
                  "src": "48662:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19303,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "48662:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48622:51:15"
            },
            "returnParameters": {
              "id": 19306,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48688:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19342,
            "nodeType": "FunctionDefinition",
            "src": "48803:164:15",
            "nodes": [],
            "body": {
              "id": 19341,
              "nodeType": "Block",
              "src": "48866:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e742c75696e7429",
                            "id": 19333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "48916:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4667de8ece32e91ade336fb6d8a14a500512d40e1162a34636a5bca908b16e6a",
                              "typeString": "literal_string \"log(bool,bool,uint,uint)\""
                            },
                            "value": "log(bool,bool,uint,uint)"
                          },
                          {
                            "id": 19334,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19321,
                            "src": "48944:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19335,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19323,
                            "src": "48948:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19336,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19325,
                            "src": "48952:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19337,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19327,
                            "src": "48956:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4667de8ece32e91ade336fb6d8a14a500512d40e1162a34636a5bca908b16e6a",
                              "typeString": "literal_string \"log(bool,bool,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19331,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "48892:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19332,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "48896:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "48892:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "48892:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19330,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "48876:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "48876:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19340,
                  "nodeType": "ExpressionStatement",
                  "src": "48876:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48812:3:15",
            "parameters": {
              "id": 19328,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19321,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48821:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19342,
                  "src": "48816:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19320,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48816:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19323,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "48830:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19342,
                  "src": "48825:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19322,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48825:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19325,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "48839:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19342,
                  "src": "48834:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19324,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "48834:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19327,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "48848:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19342,
                  "src": "48843:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19326,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "48843:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48815:36:15"
            },
            "returnParameters": {
              "id": 19329,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "48866:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19365,
            "nodeType": "FunctionDefinition",
            "src": "48973:175:15",
            "nodes": [],
            "body": {
              "id": 19364,
              "nodeType": "Block",
              "src": "49045:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e742c737472696e6729",
                            "id": 19356,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49095:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_50618937639b3b1cb3bbe247efb1fae4eb9a85d1e66ac66dfc77c62561966adc",
                              "typeString": "literal_string \"log(bool,bool,uint,string)\""
                            },
                            "value": "log(bool,bool,uint,string)"
                          },
                          {
                            "id": 19357,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19344,
                            "src": "49125:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19358,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19346,
                            "src": "49129:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19359,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19348,
                            "src": "49133:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19360,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19350,
                            "src": "49137:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_50618937639b3b1cb3bbe247efb1fae4eb9a85d1e66ac66dfc77c62561966adc",
                              "typeString": "literal_string \"log(bool,bool,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19354,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49071:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49075:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49071:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49071:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19353,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "49055:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19362,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49055:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19363,
                  "nodeType": "ExpressionStatement",
                  "src": "49055:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "48982:3:15",
            "parameters": {
              "id": 19351,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19344,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "48991:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19365,
                  "src": "48986:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19343,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48986:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19346,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49000:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19365,
                  "src": "48995:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19345,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "48995:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19348,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49009:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19365,
                  "src": "49004:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19347,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "49004:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19350,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49027:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19365,
                  "src": "49013:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19349,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49013:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "48985:45:15"
            },
            "returnParameters": {
              "id": 19352,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49045:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19388,
            "nodeType": "FunctionDefinition",
            "src": "49154:164:15",
            "nodes": [],
            "body": {
              "id": 19387,
              "nodeType": "Block",
              "src": "49217:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e742c626f6f6c29",
                            "id": 19379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49267:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ab5cc1c47d926d79461c86216768f32b6ec0ac12d51c1eb543ea3bd1cfec0110",
                              "typeString": "literal_string \"log(bool,bool,uint,bool)\""
                            },
                            "value": "log(bool,bool,uint,bool)"
                          },
                          {
                            "id": 19380,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19367,
                            "src": "49295:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19381,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19369,
                            "src": "49299:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19382,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19371,
                            "src": "49303:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19383,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19373,
                            "src": "49307:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ab5cc1c47d926d79461c86216768f32b6ec0ac12d51c1eb543ea3bd1cfec0110",
                              "typeString": "literal_string \"log(bool,bool,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19377,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49243:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49247:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49243:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19384,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49243:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19376,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "49227:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19385,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49227:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19386,
                  "nodeType": "ExpressionStatement",
                  "src": "49227:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49163:3:15",
            "parameters": {
              "id": 19374,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19367,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49172:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19388,
                  "src": "49167:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19366,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49167:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19369,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49181:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19388,
                  "src": "49176:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19368,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49176:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19371,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49190:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19388,
                  "src": "49185:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19370,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "49185:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19373,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49199:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19388,
                  "src": "49194:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19372,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49194:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49166:36:15"
            },
            "returnParameters": {
              "id": 19375,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49217:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19411,
            "nodeType": "FunctionDefinition",
            "src": "49324:170:15",
            "nodes": [],
            "body": {
              "id": 19410,
              "nodeType": "Block",
              "src": "49390:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e742c6164647265737329",
                            "id": 19402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49440:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0bff950dc175e3e278946e4adb75fffc4ee67cda33555121dd293b95b27a39a7",
                              "typeString": "literal_string \"log(bool,bool,uint,address)\""
                            },
                            "value": "log(bool,bool,uint,address)"
                          },
                          {
                            "id": 19403,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19390,
                            "src": "49471:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19404,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19392,
                            "src": "49475:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19405,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19394,
                            "src": "49479:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19406,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19396,
                            "src": "49483:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0bff950dc175e3e278946e4adb75fffc4ee67cda33555121dd293b95b27a39a7",
                              "typeString": "literal_string \"log(bool,bool,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19400,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49416:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49420:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49416:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49416:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19399,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "49400:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49400:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19409,
                  "nodeType": "ExpressionStatement",
                  "src": "49400:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49333:3:15",
            "parameters": {
              "id": 19397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19390,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49342:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19411,
                  "src": "49337:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19389,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49337:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19392,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49351:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19411,
                  "src": "49346:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19391,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49346:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19394,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49360:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19411,
                  "src": "49355:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19393,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "49355:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19396,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49372:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19411,
                  "src": "49364:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19395,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "49364:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49336:39:15"
            },
            "returnParameters": {
              "id": 19398,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49390:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19434,
            "nodeType": "FunctionDefinition",
            "src": "49500:175:15",
            "nodes": [],
            "body": {
              "id": 19433,
              "nodeType": "Block",
              "src": "49572:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c75696e7429",
                            "id": 19425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49622:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_178b4685db1dff62c4ee472c2e6bf50abba0dc230768235e43c6259152d1244e",
                              "typeString": "literal_string \"log(bool,bool,string,uint)\""
                            },
                            "value": "log(bool,bool,string,uint)"
                          },
                          {
                            "id": 19426,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19413,
                            "src": "49652:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19427,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19415,
                            "src": "49656:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19428,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19417,
                            "src": "49660:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19429,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19419,
                            "src": "49664:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_178b4685db1dff62c4ee472c2e6bf50abba0dc230768235e43c6259152d1244e",
                              "typeString": "literal_string \"log(bool,bool,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19423,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49598:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49602:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49598:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19430,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49598:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19422,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "49582:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19431,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49582:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19432,
                  "nodeType": "ExpressionStatement",
                  "src": "49582:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49509:3:15",
            "parameters": {
              "id": 19420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19413,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49518:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19434,
                  "src": "49513:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19412,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49513:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19415,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49527:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19434,
                  "src": "49522:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19414,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49522:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19417,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49545:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19434,
                  "src": "49531:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19416,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49531:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19419,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49554:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19434,
                  "src": "49549:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19418,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "49549:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49512:45:15"
            },
            "returnParameters": {
              "id": 19421,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49572:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19457,
            "nodeType": "FunctionDefinition",
            "src": "49681:186:15",
            "nodes": [],
            "body": {
              "id": 19456,
              "nodeType": "Block",
              "src": "49762:105:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c737472696e6729",
                            "id": 19448,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49812:30:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6d1e87518c98344bc3efd52648f61de340bda51607aec409d641f3467caafaaf",
                              "typeString": "literal_string \"log(bool,bool,string,string)\""
                            },
                            "value": "log(bool,bool,string,string)"
                          },
                          {
                            "id": 19449,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19436,
                            "src": "49844:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19450,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19438,
                            "src": "49848:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19451,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19440,
                            "src": "49852:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19452,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19442,
                            "src": "49856:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6d1e87518c98344bc3efd52648f61de340bda51607aec409d641f3467caafaaf",
                              "typeString": "literal_string \"log(bool,bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19446,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49788:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49792:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49788:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19453,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49788:71:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19445,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "49772:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49772:88:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19455,
                  "nodeType": "ExpressionStatement",
                  "src": "49772:88:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49690:3:15",
            "parameters": {
              "id": 19443,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19436,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49699:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19457,
                  "src": "49694:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19435,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49694:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19438,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49708:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19457,
                  "src": "49703:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19437,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49703:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19440,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49726:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19457,
                  "src": "49712:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19439,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49712:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19442,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49744:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19457,
                  "src": "49730:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19441,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49730:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49693:54:15"
            },
            "returnParameters": {
              "id": 19444,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49762:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19480,
            "nodeType": "FunctionDefinition",
            "src": "49873:175:15",
            "nodes": [],
            "body": {
              "id": 19479,
              "nodeType": "Block",
              "src": "49945:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c626f6f6c29",
                            "id": 19471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "49995:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b857163a2b7b8273ed53cefa410aa148f1833bdfc22da11e1e2fb89c6e625d02",
                              "typeString": "literal_string \"log(bool,bool,string,bool)\""
                            },
                            "value": "log(bool,bool,string,bool)"
                          },
                          {
                            "id": 19472,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19459,
                            "src": "50025:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19473,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19461,
                            "src": "50029:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19474,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19463,
                            "src": "50033:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19475,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19465,
                            "src": "50037:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_b857163a2b7b8273ed53cefa410aa148f1833bdfc22da11e1e2fb89c6e625d02",
                              "typeString": "literal_string \"log(bool,bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19469,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "49971:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "49975:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "49971:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "49971:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19468,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "49955:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "49955:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19478,
                  "nodeType": "ExpressionStatement",
                  "src": "49955:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "49882:3:15",
            "parameters": {
              "id": 19466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19459,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "49891:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19480,
                  "src": "49886:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19458,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49886:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19461,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "49900:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19480,
                  "src": "49895:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19460,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49895:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19463,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "49918:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19480,
                  "src": "49904:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19462,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "49904:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19465,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "49927:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19480,
                  "src": "49922:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19464,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "49922:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "49885:45:15"
            },
            "returnParameters": {
              "id": 19467,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "49945:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19503,
            "nodeType": "FunctionDefinition",
            "src": "50054:181:15",
            "nodes": [],
            "body": {
              "id": 19502,
              "nodeType": "Block",
              "src": "50129:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c6164647265737329",
                            "id": 19494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50179:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f9ad2b893873fa31c02b102aa30743b2e44c102daa588ea9d1eb1f2baf23d202",
                              "typeString": "literal_string \"log(bool,bool,string,address)\""
                            },
                            "value": "log(bool,bool,string,address)"
                          },
                          {
                            "id": 19495,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19482,
                            "src": "50212:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19496,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19484,
                            "src": "50216:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19497,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19486,
                            "src": "50220:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19498,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19488,
                            "src": "50224:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f9ad2b893873fa31c02b102aa30743b2e44c102daa588ea9d1eb1f2baf23d202",
                              "typeString": "literal_string \"log(bool,bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19492,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50155:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50159:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50155:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50155:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19491,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "50139:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19500,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50139:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19501,
                  "nodeType": "ExpressionStatement",
                  "src": "50139:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50063:3:15",
            "parameters": {
              "id": 19489,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19482,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50072:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19503,
                  "src": "50067:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19481,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50067:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19484,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50081:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19503,
                  "src": "50076:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19483,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50076:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19486,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50099:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19503,
                  "src": "50085:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19485,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50085:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19488,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50111:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19503,
                  "src": "50103:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19487,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50103:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50066:48:15"
            },
            "returnParameters": {
              "id": 19490,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50129:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19526,
            "nodeType": "FunctionDefinition",
            "src": "50241:164:15",
            "nodes": [],
            "body": {
              "id": 19525,
              "nodeType": "Block",
              "src": "50304:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c75696e7429",
                            "id": 19517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50354:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c248834dff84ca4bcbda9cf249a0d5da3bd0a58b4562085082654d4d9851b501",
                              "typeString": "literal_string \"log(bool,bool,bool,uint)\""
                            },
                            "value": "log(bool,bool,bool,uint)"
                          },
                          {
                            "id": 19518,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19505,
                            "src": "50382:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19519,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19507,
                            "src": "50386:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19520,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19509,
                            "src": "50390:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19521,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19511,
                            "src": "50394:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c248834dff84ca4bcbda9cf249a0d5da3bd0a58b4562085082654d4d9851b501",
                              "typeString": "literal_string \"log(bool,bool,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19515,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50330:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50334:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50330:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50330:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19514,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "50314:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50314:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19524,
                  "nodeType": "ExpressionStatement",
                  "src": "50314:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50250:3:15",
            "parameters": {
              "id": 19512,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19505,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50259:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19526,
                  "src": "50254:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19504,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50254:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19507,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50268:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19526,
                  "src": "50263:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19506,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50263:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19509,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50277:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19526,
                  "src": "50272:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19508,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50272:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19511,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50286:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19526,
                  "src": "50281:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19510,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "50281:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50253:36:15"
            },
            "returnParameters": {
              "id": 19513,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50304:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19549,
            "nodeType": "FunctionDefinition",
            "src": "50411:175:15",
            "nodes": [],
            "body": {
              "id": 19548,
              "nodeType": "Block",
              "src": "50483:103:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 19540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50533:28:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2ae408d4d030305a0361ad07c397f2b9653613b220d82459c7aeb9a6bab96c15",
                              "typeString": "literal_string \"log(bool,bool,bool,string)\""
                            },
                            "value": "log(bool,bool,bool,string)"
                          },
                          {
                            "id": 19541,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19528,
                            "src": "50563:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19542,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19530,
                            "src": "50567:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19543,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19532,
                            "src": "50571:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19544,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19534,
                            "src": "50575:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2ae408d4d030305a0361ad07c397f2b9653613b220d82459c7aeb9a6bab96c15",
                              "typeString": "literal_string \"log(bool,bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19538,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50509:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50513:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50509:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50509:69:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19537,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "50493:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19546,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50493:86:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19547,
                  "nodeType": "ExpressionStatement",
                  "src": "50493:86:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50420:3:15",
            "parameters": {
              "id": 19535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19528,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50429:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19549,
                  "src": "50424:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19527,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50424:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19530,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50438:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19549,
                  "src": "50433:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19529,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50433:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19532,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50447:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19549,
                  "src": "50442:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19531,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50442:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19534,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50465:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19549,
                  "src": "50451:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19533,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "50451:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50423:45:15"
            },
            "returnParameters": {
              "id": 19536,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50483:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19572,
            "nodeType": "FunctionDefinition",
            "src": "50592:164:15",
            "nodes": [],
            "body": {
              "id": 19571,
              "nodeType": "Block",
              "src": "50655:101:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 19563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50705:26:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3b2a5ce0ddf7b166153a4354c81efba12a817983a38c6bc3b58fd91ce816d99f",
                              "typeString": "literal_string \"log(bool,bool,bool,bool)\""
                            },
                            "value": "log(bool,bool,bool,bool)"
                          },
                          {
                            "id": 19564,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19551,
                            "src": "50733:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19565,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19553,
                            "src": "50737:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19566,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19555,
                            "src": "50741:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19567,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19557,
                            "src": "50745:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3b2a5ce0ddf7b166153a4354c81efba12a817983a38c6bc3b58fd91ce816d99f",
                              "typeString": "literal_string \"log(bool,bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19561,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50681:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50685:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50681:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19568,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50681:67:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19560,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "50665:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19569,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50665:84:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19570,
                  "nodeType": "ExpressionStatement",
                  "src": "50665:84:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50601:3:15",
            "parameters": {
              "id": 19558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19551,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50610:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19572,
                  "src": "50605:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19550,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50605:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19553,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50619:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19572,
                  "src": "50614:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19552,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50614:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19555,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50628:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19572,
                  "src": "50623:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19554,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50623:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19557,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50637:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19572,
                  "src": "50632:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19556,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50632:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50604:36:15"
            },
            "returnParameters": {
              "id": 19559,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50655:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19595,
            "nodeType": "FunctionDefinition",
            "src": "50762:170:15",
            "nodes": [],
            "body": {
              "id": 19594,
              "nodeType": "Block",
              "src": "50828:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 19586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "50878:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8c329b1a1752dedfc6b781d23096b49b7f905d62405e6e3f0ab0344786ff69f4",
                              "typeString": "literal_string \"log(bool,bool,bool,address)\""
                            },
                            "value": "log(bool,bool,bool,address)"
                          },
                          {
                            "id": 19587,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19574,
                            "src": "50909:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19588,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19576,
                            "src": "50913:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19589,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19578,
                            "src": "50917:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19590,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19580,
                            "src": "50921:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8c329b1a1752dedfc6b781d23096b49b7f905d62405e6e3f0ab0344786ff69f4",
                              "typeString": "literal_string \"log(bool,bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19584,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "50854:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "50858:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "50854:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "50854:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19583,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "50838:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "50838:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19593,
                  "nodeType": "ExpressionStatement",
                  "src": "50838:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50771:3:15",
            "parameters": {
              "id": 19581,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19574,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50780:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19595,
                  "src": "50775:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19573,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50775:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19576,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50789:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19595,
                  "src": "50784:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19575,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50784:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19578,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50798:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19595,
                  "src": "50793:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19577,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50793:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19580,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50810:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19595,
                  "src": "50802:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19579,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50802:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50774:39:15"
            },
            "returnParameters": {
              "id": 19582,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "50828:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19618,
            "nodeType": "FunctionDefinition",
            "src": "50938:170:15",
            "nodes": [],
            "body": {
              "id": 19617,
              "nodeType": "Block",
              "src": "51004:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c75696e7429",
                            "id": 19609,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51054:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_609386e78fd5b0eaf4b919077203f18b1606ddf72247d9e5eef9238918f7cf5e",
                              "typeString": "literal_string \"log(bool,bool,address,uint)\""
                            },
                            "value": "log(bool,bool,address,uint)"
                          },
                          {
                            "id": 19610,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19597,
                            "src": "51085:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19611,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19599,
                            "src": "51089:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19612,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19601,
                            "src": "51093:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19613,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19603,
                            "src": "51097:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_609386e78fd5b0eaf4b919077203f18b1606ddf72247d9e5eef9238918f7cf5e",
                              "typeString": "literal_string \"log(bool,bool,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19607,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51030:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51034:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51030:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51030:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19606,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "51014:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19615,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51014:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19616,
                  "nodeType": "ExpressionStatement",
                  "src": "51014:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "50947:3:15",
            "parameters": {
              "id": 19604,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19597,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "50956:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19618,
                  "src": "50951:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19596,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50951:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19599,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "50965:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19618,
                  "src": "50960:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19598,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "50960:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19601,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "50977:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19618,
                  "src": "50969:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19600,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "50969:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19603,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "50986:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19618,
                  "src": "50981:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19602,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "50981:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "50950:39:15"
            },
            "returnParameters": {
              "id": 19605,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51004:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19641,
            "nodeType": "FunctionDefinition",
            "src": "51114:181:15",
            "nodes": [],
            "body": {
              "id": 19640,
              "nodeType": "Block",
              "src": "51189:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c737472696e6729",
                            "id": 19632,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51239:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a0a479635c05dee438b610769de0f667f2e93ee267e4cd4badf3dd44eb6271d2",
                              "typeString": "literal_string \"log(bool,bool,address,string)\""
                            },
                            "value": "log(bool,bool,address,string)"
                          },
                          {
                            "id": 19633,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19620,
                            "src": "51272:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19634,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19622,
                            "src": "51276:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19635,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19624,
                            "src": "51280:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19636,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19626,
                            "src": "51284:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a0a479635c05dee438b610769de0f667f2e93ee267e4cd4badf3dd44eb6271d2",
                              "typeString": "literal_string \"log(bool,bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19630,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51215:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51219:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51215:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19637,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51215:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19629,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "51199:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51199:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19639,
                  "nodeType": "ExpressionStatement",
                  "src": "51199:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51123:3:15",
            "parameters": {
              "id": 19627,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19620,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51132:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19641,
                  "src": "51127:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19619,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51127:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19622,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51141:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19641,
                  "src": "51136:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19621,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51136:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19624,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51153:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19641,
                  "src": "51145:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19623,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "51145:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19626,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51171:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19641,
                  "src": "51157:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19625,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "51157:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51126:48:15"
            },
            "returnParameters": {
              "id": 19628,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51189:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19664,
            "nodeType": "FunctionDefinition",
            "src": "51301:170:15",
            "nodes": [],
            "body": {
              "id": 19663,
              "nodeType": "Block",
              "src": "51367:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c626f6f6c29",
                            "id": 19655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51417:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c0a302d8f11e8919127c20f396068f7014b94967efb042778db9b27b68ee1eaf",
                              "typeString": "literal_string \"log(bool,bool,address,bool)\""
                            },
                            "value": "log(bool,bool,address,bool)"
                          },
                          {
                            "id": 19656,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19643,
                            "src": "51448:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19657,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19645,
                            "src": "51452:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19658,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19647,
                            "src": "51456:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19659,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19649,
                            "src": "51460:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c0a302d8f11e8919127c20f396068f7014b94967efb042778db9b27b68ee1eaf",
                              "typeString": "literal_string \"log(bool,bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19653,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51393:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51397:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51393:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19660,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51393:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19652,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "51377:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51377:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19662,
                  "nodeType": "ExpressionStatement",
                  "src": "51377:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51310:3:15",
            "parameters": {
              "id": 19650,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19643,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51319:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19664,
                  "src": "51314:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19642,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51314:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19645,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51328:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19664,
                  "src": "51323:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19644,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51323:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19647,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51340:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19664,
                  "src": "51332:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19646,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "51332:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19649,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51349:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19664,
                  "src": "51344:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19648,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51344:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51313:39:15"
            },
            "returnParameters": {
              "id": 19651,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51367:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19687,
            "nodeType": "FunctionDefinition",
            "src": "51477:176:15",
            "nodes": [],
            "body": {
              "id": 19686,
              "nodeType": "Block",
              "src": "51546:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c6164647265737329",
                            "id": 19678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51596:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f4880ea4063b4f7e3c68468bb4a7a3f1502aa7497bce4fb0ba02ec0450f047f4",
                              "typeString": "literal_string \"log(bool,bool,address,address)\""
                            },
                            "value": "log(bool,bool,address,address)"
                          },
                          {
                            "id": 19679,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19666,
                            "src": "51630:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19680,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19668,
                            "src": "51634:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19681,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19670,
                            "src": "51638:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19682,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19672,
                            "src": "51642:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f4880ea4063b4f7e3c68468bb4a7a3f1502aa7497bce4fb0ba02ec0450f047f4",
                              "typeString": "literal_string \"log(bool,bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19676,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51572:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51576:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51572:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51572:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19675,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "51556:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51556:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19685,
                  "nodeType": "ExpressionStatement",
                  "src": "51556:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51486:3:15",
            "parameters": {
              "id": 19673,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19666,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51495:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19687,
                  "src": "51490:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19665,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51490:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19668,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51504:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19687,
                  "src": "51499:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19667,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51499:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19670,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51516:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19687,
                  "src": "51508:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19669,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "51508:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19672,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51528:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19687,
                  "src": "51520:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19671,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "51520:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51489:42:15"
            },
            "returnParameters": {
              "id": 19674,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51546:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19710,
            "nodeType": "FunctionDefinition",
            "src": "51659:170:15",
            "nodes": [],
            "body": {
              "id": 19709,
              "nodeType": "Block",
              "src": "51725:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e742c75696e7429",
                            "id": 19701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51775:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9bfe72bcae17311bf78638487cb2635e8b5b6f81761042494681e890b65ae4df",
                              "typeString": "literal_string \"log(bool,address,uint,uint)\""
                            },
                            "value": "log(bool,address,uint,uint)"
                          },
                          {
                            "id": 19702,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19689,
                            "src": "51806:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19703,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19691,
                            "src": "51810:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19704,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19693,
                            "src": "51814:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19705,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19695,
                            "src": "51818:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9bfe72bcae17311bf78638487cb2635e8b5b6f81761042494681e890b65ae4df",
                              "typeString": "literal_string \"log(bool,address,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19699,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51751:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51755:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51751:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51751:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19698,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "51735:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51735:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19708,
                  "nodeType": "ExpressionStatement",
                  "src": "51735:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51668:3:15",
            "parameters": {
              "id": 19696,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19689,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51677:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19710,
                  "src": "51672:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19688,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51672:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19691,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51689:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19710,
                  "src": "51681:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19690,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "51681:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19693,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51698:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19710,
                  "src": "51693:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19692,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "51693:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19695,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51707:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19710,
                  "src": "51702:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19694,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "51702:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51671:39:15"
            },
            "returnParameters": {
              "id": 19697,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51725:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19733,
            "nodeType": "FunctionDefinition",
            "src": "51835:181:15",
            "nodes": [],
            "body": {
              "id": 19732,
              "nodeType": "Block",
              "src": "51910:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e742c737472696e6729",
                            "id": 19724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "51960:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a0685833a55270d98fa68e8c0a0f64fe3e03f6cdaeaebd8f87342de905392f45",
                              "typeString": "literal_string \"log(bool,address,uint,string)\""
                            },
                            "value": "log(bool,address,uint,string)"
                          },
                          {
                            "id": 19725,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19712,
                            "src": "51993:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19726,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19714,
                            "src": "51997:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19727,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19716,
                            "src": "52001:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19728,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19718,
                            "src": "52005:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a0685833a55270d98fa68e8c0a0f64fe3e03f6cdaeaebd8f87342de905392f45",
                              "typeString": "literal_string \"log(bool,address,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19722,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "51936:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "51940:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "51936:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "51936:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19721,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "51920:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19730,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "51920:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19731,
                  "nodeType": "ExpressionStatement",
                  "src": "51920:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "51844:3:15",
            "parameters": {
              "id": 19719,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19712,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "51853:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19733,
                  "src": "51848:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19711,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "51848:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19714,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "51865:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19733,
                  "src": "51857:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19713,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "51857:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19716,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "51874:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19733,
                  "src": "51869:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19715,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "51869:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19718,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "51892:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19733,
                  "src": "51878:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19717,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "51878:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "51847:48:15"
            },
            "returnParameters": {
              "id": 19720,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "51910:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19756,
            "nodeType": "FunctionDefinition",
            "src": "52022:170:15",
            "nodes": [],
            "body": {
              "id": 19755,
              "nodeType": "Block",
              "src": "52088:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e742c626f6f6c29",
                            "id": 19747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52138:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ee8d8672273fdba9089296874ea62335af7f94273edab558dd69c0c81ad5275f",
                              "typeString": "literal_string \"log(bool,address,uint,bool)\""
                            },
                            "value": "log(bool,address,uint,bool)"
                          },
                          {
                            "id": 19748,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19735,
                            "src": "52169:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19749,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19737,
                            "src": "52173:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19750,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19739,
                            "src": "52177:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19751,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19741,
                            "src": "52181:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ee8d8672273fdba9089296874ea62335af7f94273edab558dd69c0c81ad5275f",
                              "typeString": "literal_string \"log(bool,address,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19745,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52114:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52118:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52114:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19752,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52114:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19744,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "52098:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52098:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19754,
                  "nodeType": "ExpressionStatement",
                  "src": "52098:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52031:3:15",
            "parameters": {
              "id": 19742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19735,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52040:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19756,
                  "src": "52035:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19734,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52035:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19737,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52052:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19756,
                  "src": "52044:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19736,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52044:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19739,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52061:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19756,
                  "src": "52056:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19738,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "52056:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19741,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52070:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19756,
                  "src": "52065:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19740,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52065:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52034:39:15"
            },
            "returnParameters": {
              "id": 19743,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52088:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19779,
            "nodeType": "FunctionDefinition",
            "src": "52198:176:15",
            "nodes": [],
            "body": {
              "id": 19778,
              "nodeType": "Block",
              "src": "52267:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e742c6164647265737329",
                            "id": 19770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52317:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_68f158b5f9bd826807d19c20c2d71bd298a10503195154a299bf8d64baa18687",
                              "typeString": "literal_string \"log(bool,address,uint,address)\""
                            },
                            "value": "log(bool,address,uint,address)"
                          },
                          {
                            "id": 19771,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19758,
                            "src": "52351:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19772,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19760,
                            "src": "52355:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19773,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19762,
                            "src": "52359:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 19774,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19764,
                            "src": "52363:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_68f158b5f9bd826807d19c20c2d71bd298a10503195154a299bf8d64baa18687",
                              "typeString": "literal_string \"log(bool,address,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19768,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52293:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52297:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52293:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52293:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19767,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "52277:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19776,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52277:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19777,
                  "nodeType": "ExpressionStatement",
                  "src": "52277:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52207:3:15",
            "parameters": {
              "id": 19765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19758,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52216:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19779,
                  "src": "52211:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19757,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52211:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19760,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52228:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19779,
                  "src": "52220:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19759,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52220:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19762,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52237:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19779,
                  "src": "52232:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19761,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "52232:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19764,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52249:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19779,
                  "src": "52241:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19763,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52241:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52210:42:15"
            },
            "returnParameters": {
              "id": 19766,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52267:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19802,
            "nodeType": "FunctionDefinition",
            "src": "52380:181:15",
            "nodes": [],
            "body": {
              "id": 19801,
              "nodeType": "Block",
              "src": "52455:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c75696e7429",
                            "id": 19793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52505:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0b99fc2207222410afd35c7faf7feba54ff2367ba89f893584c27ce75693de6e",
                              "typeString": "literal_string \"log(bool,address,string,uint)\""
                            },
                            "value": "log(bool,address,string,uint)"
                          },
                          {
                            "id": 19794,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19781,
                            "src": "52538:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19795,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19783,
                            "src": "52542:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19796,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19785,
                            "src": "52546:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19797,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19787,
                            "src": "52550:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0b99fc2207222410afd35c7faf7feba54ff2367ba89f893584c27ce75693de6e",
                              "typeString": "literal_string \"log(bool,address,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19791,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52481:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52485:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52481:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52481:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19790,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "52465:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19799,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52465:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19800,
                  "nodeType": "ExpressionStatement",
                  "src": "52465:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52389:3:15",
            "parameters": {
              "id": 19788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19781,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52398:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19802,
                  "src": "52393:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19780,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52393:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19783,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52410:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19802,
                  "src": "52402:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19782,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52402:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19785,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52428:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19802,
                  "src": "52414:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19784,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "52414:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19787,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52437:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19802,
                  "src": "52432:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19786,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "52432:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52392:48:15"
            },
            "returnParameters": {
              "id": 19789,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52455:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19825,
            "nodeType": "FunctionDefinition",
            "src": "52567:192:15",
            "nodes": [],
            "body": {
              "id": 19824,
              "nodeType": "Block",
              "src": "52651:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c737472696e6729",
                            "id": 19816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52701:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a73c1db639dbf1382c9113eacdf5b14a7ccd81fc001ac60393623936011bf49d",
                              "typeString": "literal_string \"log(bool,address,string,string)\""
                            },
                            "value": "log(bool,address,string,string)"
                          },
                          {
                            "id": 19817,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19804,
                            "src": "52736:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19818,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19806,
                            "src": "52740:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19819,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19808,
                            "src": "52744:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19820,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19810,
                            "src": "52748:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a73c1db639dbf1382c9113eacdf5b14a7ccd81fc001ac60393623936011bf49d",
                              "typeString": "literal_string \"log(bool,address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19814,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52677:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52681:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52677:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52677:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19813,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "52661:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52661:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19823,
                  "nodeType": "ExpressionStatement",
                  "src": "52661:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52576:3:15",
            "parameters": {
              "id": 19811,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19804,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52585:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19825,
                  "src": "52580:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19803,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52580:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19806,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52597:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19825,
                  "src": "52589:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19805,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52589:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19808,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52615:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19825,
                  "src": "52601:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19807,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "52601:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19810,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52633:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19825,
                  "src": "52619:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19809,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "52619:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52579:57:15"
            },
            "returnParameters": {
              "id": 19812,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52651:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19848,
            "nodeType": "FunctionDefinition",
            "src": "52765:181:15",
            "nodes": [],
            "body": {
              "id": 19847,
              "nodeType": "Block",
              "src": "52840:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c626f6f6c29",
                            "id": 19839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "52890:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e2bfd60b4f6acdab0603dda631b69bf37ab7cbf71bc5953f9ed72c1f2a76f7dc",
                              "typeString": "literal_string \"log(bool,address,string,bool)\""
                            },
                            "value": "log(bool,address,string,bool)"
                          },
                          {
                            "id": 19840,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19827,
                            "src": "52923:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19841,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19829,
                            "src": "52927:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19842,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19831,
                            "src": "52931:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19843,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19833,
                            "src": "52935:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e2bfd60b4f6acdab0603dda631b69bf37ab7cbf71bc5953f9ed72c1f2a76f7dc",
                              "typeString": "literal_string \"log(bool,address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19837,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "52866:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19838,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "52870:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "52866:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "52866:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19836,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "52850:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19845,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "52850:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19846,
                  "nodeType": "ExpressionStatement",
                  "src": "52850:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52774:3:15",
            "parameters": {
              "id": 19834,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19827,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52783:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19848,
                  "src": "52778:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19826,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52778:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19829,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52795:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19848,
                  "src": "52787:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19828,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52787:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19831,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "52813:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19848,
                  "src": "52799:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19830,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "52799:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19833,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "52822:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19848,
                  "src": "52817:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19832,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52817:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52777:48:15"
            },
            "returnParameters": {
              "id": 19835,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "52840:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19871,
            "nodeType": "FunctionDefinition",
            "src": "52952:187:15",
            "nodes": [],
            "body": {
              "id": 19870,
              "nodeType": "Block",
              "src": "53030:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c6164647265737329",
                            "id": 19862,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53080:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6f7c603e9035cbc7959bb3d44ec862ddc6711eecebd67d54ceb0010f42f85654",
                              "typeString": "literal_string \"log(bool,address,string,address)\""
                            },
                            "value": "log(bool,address,string,address)"
                          },
                          {
                            "id": 19863,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19850,
                            "src": "53116:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19864,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19852,
                            "src": "53120:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19865,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19854,
                            "src": "53124:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 19866,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19856,
                            "src": "53128:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6f7c603e9035cbc7959bb3d44ec862ddc6711eecebd67d54ceb0010f42f85654",
                              "typeString": "literal_string \"log(bool,address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19860,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53056:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53060:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53056:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53056:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19859,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "53040:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19868,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53040:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19869,
                  "nodeType": "ExpressionStatement",
                  "src": "53040:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "52961:3:15",
            "parameters": {
              "id": 19857,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19850,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "52970:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19871,
                  "src": "52965:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19849,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "52965:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19852,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "52982:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19871,
                  "src": "52974:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19851,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "52974:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19854,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53000:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19871,
                  "src": "52986:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19853,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "52986:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19856,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53012:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19871,
                  "src": "53004:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19855,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53004:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "52964:51:15"
            },
            "returnParameters": {
              "id": 19858,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53030:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19894,
            "nodeType": "FunctionDefinition",
            "src": "53145:170:15",
            "nodes": [],
            "body": {
              "id": 19893,
              "nodeType": "Block",
              "src": "53211:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c75696e7429",
                            "id": 19885,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53261:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4cb60fd1171fb665e1565124463601e5c451a362c8efbc6e1fcfbffbbb9850d9",
                              "typeString": "literal_string \"log(bool,address,bool,uint)\""
                            },
                            "value": "log(bool,address,bool,uint)"
                          },
                          {
                            "id": 19886,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19873,
                            "src": "53292:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19887,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19875,
                            "src": "53296:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19888,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19877,
                            "src": "53300:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19889,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19879,
                            "src": "53304:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4cb60fd1171fb665e1565124463601e5c451a362c8efbc6e1fcfbffbbb9850d9",
                              "typeString": "literal_string \"log(bool,address,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19883,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53237:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53241:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53237:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19890,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53237:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19882,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "53221:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53221:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19892,
                  "nodeType": "ExpressionStatement",
                  "src": "53221:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53154:3:15",
            "parameters": {
              "id": 19880,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19873,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53163:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19894,
                  "src": "53158:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19872,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53158:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19875,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53175:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19894,
                  "src": "53167:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19874,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53167:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19877,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53184:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19894,
                  "src": "53179:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19876,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53179:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19879,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53193:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19894,
                  "src": "53188:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19878,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "53188:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53157:39:15"
            },
            "returnParameters": {
              "id": 19881,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53211:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19917,
            "nodeType": "FunctionDefinition",
            "src": "53321:181:15",
            "nodes": [],
            "body": {
              "id": 19916,
              "nodeType": "Block",
              "src": "53396:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c737472696e6729",
                            "id": 19908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53446:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4a66cb34796065525d301a5b87b440b55f1936e34dd66e2f2039307bc4e3ea59",
                              "typeString": "literal_string \"log(bool,address,bool,string)\""
                            },
                            "value": "log(bool,address,bool,string)"
                          },
                          {
                            "id": 19909,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19896,
                            "src": "53479:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19910,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19898,
                            "src": "53483:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19911,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19900,
                            "src": "53487:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19912,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19902,
                            "src": "53491:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_4a66cb34796065525d301a5b87b440b55f1936e34dd66e2f2039307bc4e3ea59",
                              "typeString": "literal_string \"log(bool,address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19906,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53422:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53426:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53422:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19913,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53422:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19905,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "53406:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53406:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19915,
                  "nodeType": "ExpressionStatement",
                  "src": "53406:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53330:3:15",
            "parameters": {
              "id": 19903,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19896,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53339:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19917,
                  "src": "53334:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19895,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53334:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19898,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53351:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19917,
                  "src": "53343:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19897,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53343:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19900,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53360:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19917,
                  "src": "53355:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19899,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53355:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19902,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53378:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19917,
                  "src": "53364:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19901,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "53364:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53333:48:15"
            },
            "returnParameters": {
              "id": 19904,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53396:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19940,
            "nodeType": "FunctionDefinition",
            "src": "53508:170:15",
            "nodes": [],
            "body": {
              "id": 19939,
              "nodeType": "Block",
              "src": "53574:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c626f6f6c29",
                            "id": 19931,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53624:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6a9c478bc98300d44308882e2e0b5864f2536a2939cb77105f503738b5832577",
                              "typeString": "literal_string \"log(bool,address,bool,bool)\""
                            },
                            "value": "log(bool,address,bool,bool)"
                          },
                          {
                            "id": 19932,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19919,
                            "src": "53655:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19933,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19921,
                            "src": "53659:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19934,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19923,
                            "src": "53663:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19935,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19925,
                            "src": "53667:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6a9c478bc98300d44308882e2e0b5864f2536a2939cb77105f503738b5832577",
                              "typeString": "literal_string \"log(bool,address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 19929,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53600:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53604:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53600:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53600:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19928,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "53584:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53584:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19938,
                  "nodeType": "ExpressionStatement",
                  "src": "53584:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53517:3:15",
            "parameters": {
              "id": 19926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19919,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53526:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19940,
                  "src": "53521:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19918,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53521:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19921,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53538:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19940,
                  "src": "53530:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19920,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53530:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19923,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53547:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19940,
                  "src": "53542:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19922,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53542:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19925,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53556:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19940,
                  "src": "53551:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19924,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53551:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53520:39:15"
            },
            "returnParameters": {
              "id": 19927,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53574:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19963,
            "nodeType": "FunctionDefinition",
            "src": "53684:176:15",
            "nodes": [],
            "body": {
              "id": 19962,
              "nodeType": "Block",
              "src": "53753:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c6164647265737329",
                            "id": 19954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53803:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1c41a336759f1c2fe1d8b137296b2dfbdcfe7114fc53f203852c2835c09f8870",
                              "typeString": "literal_string \"log(bool,address,bool,address)\""
                            },
                            "value": "log(bool,address,bool,address)"
                          },
                          {
                            "id": 19955,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19942,
                            "src": "53837:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19956,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19944,
                            "src": "53841:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19957,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19946,
                            "src": "53845:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19958,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19948,
                            "src": "53849:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1c41a336759f1c2fe1d8b137296b2dfbdcfe7114fc53f203852c2835c09f8870",
                              "typeString": "literal_string \"log(bool,address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 19952,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53779:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53783:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53779:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53779:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19951,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "53763:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19960,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53763:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19961,
                  "nodeType": "ExpressionStatement",
                  "src": "53763:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53693:3:15",
            "parameters": {
              "id": 19949,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19942,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53702:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19963,
                  "src": "53697:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19941,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53697:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19944,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53714:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19963,
                  "src": "53706:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19943,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53706:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19946,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53723:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19963,
                  "src": "53718:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19945,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53718:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19948,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53735:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19963,
                  "src": "53727:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53727:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53696:42:15"
            },
            "returnParameters": {
              "id": 19950,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53753:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 19986,
            "nodeType": "FunctionDefinition",
            "src": "53866:176:15",
            "nodes": [],
            "body": {
              "id": 19985,
              "nodeType": "Block",
              "src": "53935:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c75696e7429",
                            "id": 19977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "53985:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5284bd6c2d02d32d79d43dcd0793be5ced63bf4e51bea38208974f6d8ca5def7",
                              "typeString": "literal_string \"log(bool,address,address,uint)\""
                            },
                            "value": "log(bool,address,address,uint)"
                          },
                          {
                            "id": 19978,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19965,
                            "src": "54019:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 19979,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19967,
                            "src": "54023:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19980,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19969,
                            "src": "54027:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 19981,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19971,
                            "src": "54031:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5284bd6c2d02d32d79d43dcd0793be5ced63bf4e51bea38208974f6d8ca5def7",
                              "typeString": "literal_string \"log(bool,address,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 19975,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "53961:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "53965:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "53961:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 19982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "53961:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19974,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "53945:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 19983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "53945:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 19984,
                  "nodeType": "ExpressionStatement",
                  "src": "53945:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "53875:3:15",
            "parameters": {
              "id": 19972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19965,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "53884:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19986,
                  "src": "53879:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19964,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "53879:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19967,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "53896:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19986,
                  "src": "53888:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19966,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53888:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19969,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "53908:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19986,
                  "src": "53900:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19968,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "53900:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19971,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "53917:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 19986,
                  "src": "53912:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19970,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "53912:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "53878:42:15"
            },
            "returnParameters": {
              "id": 19973,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "53935:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20009,
            "nodeType": "FunctionDefinition",
            "src": "54048:187:15",
            "nodes": [],
            "body": {
              "id": 20008,
              "nodeType": "Block",
              "src": "54126:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c737472696e6729",
                            "id": 20000,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54176:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d812a167fb7ec8cf55a11f06ff411238f0a431de331592d8a735c8c8481f7432",
                              "typeString": "literal_string \"log(bool,address,address,string)\""
                            },
                            "value": "log(bool,address,address,string)"
                          },
                          {
                            "id": 20001,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19988,
                            "src": "54212:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20002,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19990,
                            "src": "54216:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20003,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19992,
                            "src": "54220:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20004,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19994,
                            "src": "54224:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d812a167fb7ec8cf55a11f06ff411238f0a431de331592d8a735c8c8481f7432",
                              "typeString": "literal_string \"log(bool,address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 19998,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54152:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 19999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54156:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54152:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54152:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19997,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "54136:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20006,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54136:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20007,
                  "nodeType": "ExpressionStatement",
                  "src": "54136:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54057:3:15",
            "parameters": {
              "id": 19995,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19988,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54066:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20009,
                  "src": "54061:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19987,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54061:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19990,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54078:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20009,
                  "src": "54070:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54070:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19992,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54090:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20009,
                  "src": "54082:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19991,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54082:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19994,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54108:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20009,
                  "src": "54094:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19993,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "54094:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54060:51:15"
            },
            "returnParameters": {
              "id": 19996,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54126:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20032,
            "nodeType": "FunctionDefinition",
            "src": "54241:176:15",
            "nodes": [],
            "body": {
              "id": 20031,
              "nodeType": "Block",
              "src": "54310:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c626f6f6c29",
                            "id": 20023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54360:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_46600be071bbf2a7e3a3cb4fd0e6efe39e86453e4c4a27c400470867be7afd9e",
                              "typeString": "literal_string \"log(bool,address,address,bool)\""
                            },
                            "value": "log(bool,address,address,bool)"
                          },
                          {
                            "id": 20024,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20011,
                            "src": "54394:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20025,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20013,
                            "src": "54398:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20026,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20015,
                            "src": "54402:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20027,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20017,
                            "src": "54406:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_46600be071bbf2a7e3a3cb4fd0e6efe39e86453e4c4a27c400470867be7afd9e",
                              "typeString": "literal_string \"log(bool,address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20021,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54336:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20022,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54340:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54336:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20028,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54336:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20020,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "54320:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20029,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54320:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20030,
                  "nodeType": "ExpressionStatement",
                  "src": "54320:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54250:3:15",
            "parameters": {
              "id": 20018,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20011,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54259:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20032,
                  "src": "54254:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20010,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54254:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20013,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54271:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20032,
                  "src": "54263:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20012,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54263:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20015,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54283:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20032,
                  "src": "54275:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20014,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54275:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20017,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54292:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20032,
                  "src": "54287:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20016,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54287:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54253:42:15"
            },
            "returnParameters": {
              "id": 20019,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54310:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20055,
            "nodeType": "FunctionDefinition",
            "src": "54423:182:15",
            "nodes": [],
            "body": {
              "id": 20054,
              "nodeType": "Block",
              "src": "54495:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c6164647265737329",
                            "id": 20046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54545:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1d14d00189540d88098b9fe614aa8c0efbe231c1a0fee05e7d705c0342377123",
                              "typeString": "literal_string \"log(bool,address,address,address)\""
                            },
                            "value": "log(bool,address,address,address)"
                          },
                          {
                            "id": 20047,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20034,
                            "src": "54582:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20048,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20036,
                            "src": "54586:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20049,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20038,
                            "src": "54590:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20050,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20040,
                            "src": "54594:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1d14d00189540d88098b9fe614aa8c0efbe231c1a0fee05e7d705c0342377123",
                              "typeString": "literal_string \"log(bool,address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20044,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54521:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54525:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54521:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54521:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20043,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "54505:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20052,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54505:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20053,
                  "nodeType": "ExpressionStatement",
                  "src": "54505:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54432:3:15",
            "parameters": {
              "id": 20041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20034,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54441:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20055,
                  "src": "54436:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20033,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "54436:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20036,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54453:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20055,
                  "src": "54445:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20035,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54445:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20038,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54465:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20055,
                  "src": "54457:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20037,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54457:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20040,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54477:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20055,
                  "src": "54469:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54469:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54435:45:15"
            },
            "returnParameters": {
              "id": 20042,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54495:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20078,
            "nodeType": "FunctionDefinition",
            "src": "54611:170:15",
            "nodes": [],
            "body": {
              "id": 20077,
              "nodeType": "Block",
              "src": "54677:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c75696e742c75696e7429",
                            "id": 20069,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54727:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3d0e9de46a80fe11d0044e9599dfddd0e8b842cabe189638f7090f19867918c1",
                              "typeString": "literal_string \"log(address,uint,uint,uint)\""
                            },
                            "value": "log(address,uint,uint,uint)"
                          },
                          {
                            "id": 20070,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20057,
                            "src": "54758:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20071,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20059,
                            "src": "54762:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20072,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20061,
                            "src": "54766:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20073,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20063,
                            "src": "54770:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_3d0e9de46a80fe11d0044e9599dfddd0e8b842cabe189638f7090f19867918c1",
                              "typeString": "literal_string \"log(address,uint,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20067,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54703:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54707:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54703:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20074,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54703:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20066,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "54687:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54687:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20076,
                  "nodeType": "ExpressionStatement",
                  "src": "54687:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54620:3:15",
            "parameters": {
              "id": 20064,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20057,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54632:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20078,
                  "src": "54624:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20056,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54624:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20059,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54641:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20078,
                  "src": "54636:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20058,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "54636:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20061,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54650:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20078,
                  "src": "54645:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20060,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "54645:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20063,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54659:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20078,
                  "src": "54654:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20062,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "54654:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54623:39:15"
            },
            "returnParameters": {
              "id": 20065,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54677:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20101,
            "nodeType": "FunctionDefinition",
            "src": "54787:181:15",
            "nodes": [],
            "body": {
              "id": 20100,
              "nodeType": "Block",
              "src": "54862:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c75696e742c737472696e6729",
                            "id": 20092,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "54912:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_89340dab4d23e956541beb32775ccfee8376ba263886dd811a646420a3a403a3",
                              "typeString": "literal_string \"log(address,uint,uint,string)\""
                            },
                            "value": "log(address,uint,uint,string)"
                          },
                          {
                            "id": 20093,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20080,
                            "src": "54945:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20094,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20082,
                            "src": "54949:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20095,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20084,
                            "src": "54953:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20096,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20086,
                            "src": "54957:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_89340dab4d23e956541beb32775ccfee8376ba263886dd811a646420a3a403a3",
                              "typeString": "literal_string \"log(address,uint,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20090,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "54888:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "54892:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "54888:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "54888:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20089,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "54872:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "54872:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20099,
                  "nodeType": "ExpressionStatement",
                  "src": "54872:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54796:3:15",
            "parameters": {
              "id": 20087,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20080,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54808:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20101,
                  "src": "54800:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20079,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54800:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20082,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "54817:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20101,
                  "src": "54812:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20081,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "54812:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20084,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "54826:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20101,
                  "src": "54821:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20083,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "54821:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20086,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "54844:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20101,
                  "src": "54830:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20085,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "54830:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54799:48:15"
            },
            "returnParameters": {
              "id": 20088,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "54862:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20124,
            "nodeType": "FunctionDefinition",
            "src": "54974:170:15",
            "nodes": [],
            "body": {
              "id": 20123,
              "nodeType": "Block",
              "src": "55040:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c75696e742c626f6f6c29",
                            "id": 20115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55090:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ec4ba8a24543362f628480c68bc2d6749e97ab33d46530db336a528c77e48393",
                              "typeString": "literal_string \"log(address,uint,uint,bool)\""
                            },
                            "value": "log(address,uint,uint,bool)"
                          },
                          {
                            "id": 20116,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20103,
                            "src": "55121:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20117,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20105,
                            "src": "55125:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20118,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20107,
                            "src": "55129:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20119,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20109,
                            "src": "55133:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ec4ba8a24543362f628480c68bc2d6749e97ab33d46530db336a528c77e48393",
                              "typeString": "literal_string \"log(address,uint,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20113,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55066:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55070:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55066:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55066:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20112,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "55050:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20121,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55050:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20122,
                  "nodeType": "ExpressionStatement",
                  "src": "55050:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "54983:3:15",
            "parameters": {
              "id": 20110,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20103,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "54995:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20124,
                  "src": "54987:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20102,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "54987:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20105,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55004:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20124,
                  "src": "54999:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20104,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "54999:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20107,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55013:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20124,
                  "src": "55008:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20106,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "55008:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20109,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55022:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20124,
                  "src": "55017:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20108,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55017:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "54986:39:15"
            },
            "returnParameters": {
              "id": 20111,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55040:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20147,
            "nodeType": "FunctionDefinition",
            "src": "55150:176:15",
            "nodes": [],
            "body": {
              "id": 20146,
              "nodeType": "Block",
              "src": "55219:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c75696e742c6164647265737329",
                            "id": 20138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55269:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1ef634347c2e4a2aa1a4e4e13d33bf0169f02bc4d10ff6168ca604cf3134d957",
                              "typeString": "literal_string \"log(address,uint,uint,address)\""
                            },
                            "value": "log(address,uint,uint,address)"
                          },
                          {
                            "id": 20139,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20126,
                            "src": "55303:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20140,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20128,
                            "src": "55307:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20141,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20130,
                            "src": "55311:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20142,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20132,
                            "src": "55315:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_1ef634347c2e4a2aa1a4e4e13d33bf0169f02bc4d10ff6168ca604cf3134d957",
                              "typeString": "literal_string \"log(address,uint,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20136,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55245:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20137,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55249:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55245:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55245:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20135,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "55229:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20144,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55229:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20145,
                  "nodeType": "ExpressionStatement",
                  "src": "55229:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55159:3:15",
            "parameters": {
              "id": 20133,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20126,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55171:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20147,
                  "src": "55163:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20125,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55163:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20128,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55180:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20147,
                  "src": "55175:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20127,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "55175:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20130,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55189:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20147,
                  "src": "55184:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20129,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "55184:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20132,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55201:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20147,
                  "src": "55193:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20131,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55193:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55162:42:15"
            },
            "returnParameters": {
              "id": 20134,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55219:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20170,
            "nodeType": "FunctionDefinition",
            "src": "55332:181:15",
            "nodes": [],
            "body": {
              "id": 20169,
              "nodeType": "Block",
              "src": "55407:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c737472696e672c75696e7429",
                            "id": 20161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55457:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f512cf9b6f6b16313e82164dab4a017b25c36dde729112fd1b69de438557701b",
                              "typeString": "literal_string \"log(address,uint,string,uint)\""
                            },
                            "value": "log(address,uint,string,uint)"
                          },
                          {
                            "id": 20162,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20149,
                            "src": "55490:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20163,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20151,
                            "src": "55494:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20164,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20153,
                            "src": "55498:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20165,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20155,
                            "src": "55502:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f512cf9b6f6b16313e82164dab4a017b25c36dde729112fd1b69de438557701b",
                              "typeString": "literal_string \"log(address,uint,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20159,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55433:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55437:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55433:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55433:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20158,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "55417:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55417:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20168,
                  "nodeType": "ExpressionStatement",
                  "src": "55417:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55341:3:15",
            "parameters": {
              "id": 20156,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20149,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55353:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20170,
                  "src": "55345:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20148,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55345:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20151,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55362:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20170,
                  "src": "55357:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20150,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "55357:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20153,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55380:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20170,
                  "src": "55366:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20152,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "55366:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20155,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55389:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20170,
                  "src": "55384:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20154,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "55384:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55344:48:15"
            },
            "returnParameters": {
              "id": 20157,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55407:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20193,
            "nodeType": "FunctionDefinition",
            "src": "55519:192:15",
            "nodes": [],
            "body": {
              "id": 20192,
              "nodeType": "Block",
              "src": "55603:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c737472696e672c737472696e6729",
                            "id": 20184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55653:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7e56c693294848e354fd0e0f30db9c459984681d518306ec606cfd6f328a5ba0",
                              "typeString": "literal_string \"log(address,uint,string,string)\""
                            },
                            "value": "log(address,uint,string,string)"
                          },
                          {
                            "id": 20185,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20172,
                            "src": "55688:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20186,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20174,
                            "src": "55692:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20187,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20176,
                            "src": "55696:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20188,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20178,
                            "src": "55700:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7e56c693294848e354fd0e0f30db9c459984681d518306ec606cfd6f328a5ba0",
                              "typeString": "literal_string \"log(address,uint,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20182,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55629:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20183,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55633:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55629:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55629:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20181,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "55613:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20190,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55613:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20191,
                  "nodeType": "ExpressionStatement",
                  "src": "55613:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55528:3:15",
            "parameters": {
              "id": 20179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20172,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55540:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20193,
                  "src": "55532:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20171,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55532:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20174,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55549:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20193,
                  "src": "55544:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20173,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "55544:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20176,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55567:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20193,
                  "src": "55553:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20175,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "55553:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20178,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55585:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20193,
                  "src": "55571:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20177,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "55571:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55531:57:15"
            },
            "returnParameters": {
              "id": 20180,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55603:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20216,
            "nodeType": "FunctionDefinition",
            "src": "55717:181:15",
            "nodes": [],
            "body": {
              "id": 20215,
              "nodeType": "Block",
              "src": "55792:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c737472696e672c626f6f6c29",
                            "id": 20207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "55842:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a4024f1195637e9b9bd0fa746905cf1693b1e0cd3e1c717a1cbc5279763b256a",
                              "typeString": "literal_string \"log(address,uint,string,bool)\""
                            },
                            "value": "log(address,uint,string,bool)"
                          },
                          {
                            "id": 20208,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20195,
                            "src": "55875:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20209,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20197,
                            "src": "55879:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20210,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20199,
                            "src": "55883:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20211,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20201,
                            "src": "55887:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a4024f1195637e9b9bd0fa746905cf1693b1e0cd3e1c717a1cbc5279763b256a",
                              "typeString": "literal_string \"log(address,uint,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20205,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "55818:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "55822:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "55818:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20212,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "55818:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20204,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "55802:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55802:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20214,
                  "nodeType": "ExpressionStatement",
                  "src": "55802:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55726:3:15",
            "parameters": {
              "id": 20202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20195,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55738:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20216,
                  "src": "55730:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20194,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55730:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20197,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55747:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20216,
                  "src": "55742:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20196,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "55742:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20199,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55765:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20216,
                  "src": "55751:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20198,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "55751:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20201,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55774:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20216,
                  "src": "55769:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20200,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "55769:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55729:48:15"
            },
            "returnParameters": {
              "id": 20203,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55792:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20239,
            "nodeType": "FunctionDefinition",
            "src": "55904:187:15",
            "nodes": [],
            "body": {
              "id": 20238,
              "nodeType": "Block",
              "src": "55982:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c737472696e672c6164647265737329",
                            "id": 20230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56032:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dc792604099307de53721f0c554f3059214ac3d8d1f6cd01cd16cf188835e809",
                              "typeString": "literal_string \"log(address,uint,string,address)\""
                            },
                            "value": "log(address,uint,string,address)"
                          },
                          {
                            "id": 20231,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20218,
                            "src": "56068:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20232,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20220,
                            "src": "56072:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20233,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20222,
                            "src": "56076:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20234,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20224,
                            "src": "56080:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dc792604099307de53721f0c554f3059214ac3d8d1f6cd01cd16cf188835e809",
                              "typeString": "literal_string \"log(address,uint,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20228,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56008:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56012:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56008:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56008:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20227,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "55992:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "55992:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20237,
                  "nodeType": "ExpressionStatement",
                  "src": "55992:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "55913:3:15",
            "parameters": {
              "id": 20225,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20218,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "55925:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20239,
                  "src": "55917:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20217,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55917:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20220,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "55934:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20239,
                  "src": "55929:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20219,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "55929:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20222,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "55952:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20239,
                  "src": "55938:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20221,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "55938:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20224,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "55964:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20239,
                  "src": "55956:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20223,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "55956:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "55916:51:15"
            },
            "returnParameters": {
              "id": 20226,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "55982:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20262,
            "nodeType": "FunctionDefinition",
            "src": "56097:170:15",
            "nodes": [],
            "body": {
              "id": 20261,
              "nodeType": "Block",
              "src": "56163:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c2c75696e7429",
                            "id": 20253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56213:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_698f43923a9354f67c861ae1c111970990b11c7f948743e5f44d6ea901e7f1a2",
                              "typeString": "literal_string \"log(address,uint,bool,uint)\""
                            },
                            "value": "log(address,uint,bool,uint)"
                          },
                          {
                            "id": 20254,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20241,
                            "src": "56244:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20255,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20243,
                            "src": "56248:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20256,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20245,
                            "src": "56252:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20257,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20247,
                            "src": "56256:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_698f43923a9354f67c861ae1c111970990b11c7f948743e5f44d6ea901e7f1a2",
                              "typeString": "literal_string \"log(address,uint,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20251,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56189:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20252,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56193:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56189:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20258,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56189:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20250,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "56173:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56173:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20260,
                  "nodeType": "ExpressionStatement",
                  "src": "56173:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56106:3:15",
            "parameters": {
              "id": 20248,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20241,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56118:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20262,
                  "src": "56110:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20240,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56110:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20243,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56127:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20262,
                  "src": "56122:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20242,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "56122:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20245,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56136:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20262,
                  "src": "56131:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20244,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56131:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20247,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56145:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20262,
                  "src": "56140:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20246,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "56140:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56109:39:15"
            },
            "returnParameters": {
              "id": 20249,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56163:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20285,
            "nodeType": "FunctionDefinition",
            "src": "56273:181:15",
            "nodes": [],
            "body": {
              "id": 20284,
              "nodeType": "Block",
              "src": "56348:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c2c737472696e6729",
                            "id": 20276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56398:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8e8e4e75a8ccb3f0e11ad74335eebf7a17a78463e99c3b077ff34193a8918f3f",
                              "typeString": "literal_string \"log(address,uint,bool,string)\""
                            },
                            "value": "log(address,uint,bool,string)"
                          },
                          {
                            "id": 20277,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20264,
                            "src": "56431:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20278,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20266,
                            "src": "56435:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20279,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20268,
                            "src": "56439:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20280,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20270,
                            "src": "56443:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8e8e4e75a8ccb3f0e11ad74335eebf7a17a78463e99c3b077ff34193a8918f3f",
                              "typeString": "literal_string \"log(address,uint,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20274,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56374:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56378:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56374:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56374:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20273,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "56358:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20282,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56358:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20283,
                  "nodeType": "ExpressionStatement",
                  "src": "56358:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56282:3:15",
            "parameters": {
              "id": 20271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20264,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56294:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20285,
                  "src": "56286:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20263,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56286:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20266,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56303:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20285,
                  "src": "56298:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20265,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "56298:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20268,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56312:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20285,
                  "src": "56307:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20267,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56307:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20270,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56330:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20285,
                  "src": "56316:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20269,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "56316:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56285:48:15"
            },
            "returnParameters": {
              "id": 20272,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56348:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20308,
            "nodeType": "FunctionDefinition",
            "src": "56460:170:15",
            "nodes": [],
            "body": {
              "id": 20307,
              "nodeType": "Block",
              "src": "56526:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c2c626f6f6c29",
                            "id": 20299,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56576:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fea1d55aec42c422504acea77de45574d2fa3abd9dc9c6288741e19c3bd9849b",
                              "typeString": "literal_string \"log(address,uint,bool,bool)\""
                            },
                            "value": "log(address,uint,bool,bool)"
                          },
                          {
                            "id": 20300,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20287,
                            "src": "56607:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20301,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20289,
                            "src": "56611:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20302,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20291,
                            "src": "56615:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20303,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20293,
                            "src": "56619:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_fea1d55aec42c422504acea77de45574d2fa3abd9dc9c6288741e19c3bd9849b",
                              "typeString": "literal_string \"log(address,uint,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20297,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56552:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56556:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56552:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20304,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56552:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20296,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "56536:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56536:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20306,
                  "nodeType": "ExpressionStatement",
                  "src": "56536:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56469:3:15",
            "parameters": {
              "id": 20294,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20287,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56481:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20308,
                  "src": "56473:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20286,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56473:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20289,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56490:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20308,
                  "src": "56485:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20288,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "56485:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20291,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56499:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20308,
                  "src": "56494:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20290,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56494:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20293,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56508:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20308,
                  "src": "56503:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20292,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56503:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56472:39:15"
            },
            "returnParameters": {
              "id": 20295,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56526:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20331,
            "nodeType": "FunctionDefinition",
            "src": "56636:176:15",
            "nodes": [],
            "body": {
              "id": 20330,
              "nodeType": "Block",
              "src": "56705:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c2c6164647265737329",
                            "id": 20322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56755:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_23e5497254e625e6c33a3fa3eb47ff18f6bac3345da52f847bd5571820febf2d",
                              "typeString": "literal_string \"log(address,uint,bool,address)\""
                            },
                            "value": "log(address,uint,bool,address)"
                          },
                          {
                            "id": 20323,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20310,
                            "src": "56789:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20324,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20312,
                            "src": "56793:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20325,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20314,
                            "src": "56797:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20326,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20316,
                            "src": "56801:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_23e5497254e625e6c33a3fa3eb47ff18f6bac3345da52f847bd5571820febf2d",
                              "typeString": "literal_string \"log(address,uint,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20320,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56731:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56735:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56731:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20327,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56731:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20319,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "56715:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56715:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20329,
                  "nodeType": "ExpressionStatement",
                  "src": "56715:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56645:3:15",
            "parameters": {
              "id": 20317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20310,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56657:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20331,
                  "src": "56649:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20309,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56649:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20312,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56666:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20331,
                  "src": "56661:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20311,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "56661:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20314,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56675:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20331,
                  "src": "56670:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20313,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "56670:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20316,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56687:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20331,
                  "src": "56679:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20315,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56679:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56648:42:15"
            },
            "returnParameters": {
              "id": 20318,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56705:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20354,
            "nodeType": "FunctionDefinition",
            "src": "56818:176:15",
            "nodes": [],
            "body": {
              "id": 20353,
              "nodeType": "Block",
              "src": "56887:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c616464726573732c75696e7429",
                            "id": 20345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "56937:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a5d98768f8145ad77f2cf1b1f44790c3edb28c68feadee43b01883b75311ac0e",
                              "typeString": "literal_string \"log(address,uint,address,uint)\""
                            },
                            "value": "log(address,uint,address,uint)"
                          },
                          {
                            "id": 20346,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20333,
                            "src": "56971:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20347,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20335,
                            "src": "56975:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20348,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20337,
                            "src": "56979:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20349,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20339,
                            "src": "56983:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a5d98768f8145ad77f2cf1b1f44790c3edb28c68feadee43b01883b75311ac0e",
                              "typeString": "literal_string \"log(address,uint,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20343,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "56913:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "56917:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "56913:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20350,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "56913:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20342,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "56897:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "56897:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20352,
                  "nodeType": "ExpressionStatement",
                  "src": "56897:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "56827:3:15",
            "parameters": {
              "id": 20340,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20333,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "56839:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20354,
                  "src": "56831:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20332,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56831:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20335,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "56848:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20354,
                  "src": "56843:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20334,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "56843:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20337,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "56860:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20354,
                  "src": "56852:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20336,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "56852:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20339,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "56869:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20354,
                  "src": "56864:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20338,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "56864:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "56830:42:15"
            },
            "returnParameters": {
              "id": 20341,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "56887:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20377,
            "nodeType": "FunctionDefinition",
            "src": "57000:187:15",
            "nodes": [],
            "body": {
              "id": 20376,
              "nodeType": "Block",
              "src": "57078:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c616464726573732c737472696e6729",
                            "id": 20368,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57128:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5d71f39ef468709ab1c82c125aa1311ff96f65f56794c27c7babe5651379e4b4",
                              "typeString": "literal_string \"log(address,uint,address,string)\""
                            },
                            "value": "log(address,uint,address,string)"
                          },
                          {
                            "id": 20369,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20356,
                            "src": "57164:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20370,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20358,
                            "src": "57168:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20371,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20360,
                            "src": "57172:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20372,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20362,
                            "src": "57176:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5d71f39ef468709ab1c82c125aa1311ff96f65f56794c27c7babe5651379e4b4",
                              "typeString": "literal_string \"log(address,uint,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20366,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57104:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57108:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57104:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57104:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20365,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "57088:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57088:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20375,
                  "nodeType": "ExpressionStatement",
                  "src": "57088:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57009:3:15",
            "parameters": {
              "id": 20363,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20356,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57021:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20377,
                  "src": "57013:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20355,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57013:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20358,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57030:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20377,
                  "src": "57025:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20357,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "57025:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20360,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57042:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20377,
                  "src": "57034:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20359,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57034:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20362,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57060:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20377,
                  "src": "57046:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20361,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57046:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57012:51:15"
            },
            "returnParameters": {
              "id": 20364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57078:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20400,
            "nodeType": "FunctionDefinition",
            "src": "57193:176:15",
            "nodes": [],
            "body": {
              "id": 20399,
              "nodeType": "Block",
              "src": "57262:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c616464726573732c626f6f6c29",
                            "id": 20391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57312:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f181a1e98aefbb6e5d63ca72f24da9aa3686f47d72314c12e70fa7843b309ee6",
                              "typeString": "literal_string \"log(address,uint,address,bool)\""
                            },
                            "value": "log(address,uint,address,bool)"
                          },
                          {
                            "id": 20392,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20379,
                            "src": "57346:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20393,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20381,
                            "src": "57350:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20394,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20383,
                            "src": "57354:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20395,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20385,
                            "src": "57358:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f181a1e98aefbb6e5d63ca72f24da9aa3686f47d72314c12e70fa7843b309ee6",
                              "typeString": "literal_string \"log(address,uint,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20389,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57288:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57292:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57288:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57288:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20388,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "57272:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20397,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57272:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20398,
                  "nodeType": "ExpressionStatement",
                  "src": "57272:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57202:3:15",
            "parameters": {
              "id": 20386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20379,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57214:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20400,
                  "src": "57206:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20378,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57206:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20381,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57223:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20400,
                  "src": "57218:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20380,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "57218:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20383,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57235:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20400,
                  "src": "57227:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20382,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57227:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20385,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57244:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20400,
                  "src": "57239:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20384,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "57239:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57205:42:15"
            },
            "returnParameters": {
              "id": 20387,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57262:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20423,
            "nodeType": "FunctionDefinition",
            "src": "57375:182:15",
            "nodes": [],
            "body": {
              "id": 20422,
              "nodeType": "Block",
              "src": "57447:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c75696e742c616464726573732c6164647265737329",
                            "id": 20414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57497:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ec24846f1ed52bfa5dc64139c1bf8b03f991fdd5156eccb50dfe44ca5a2ca40e",
                              "typeString": "literal_string \"log(address,uint,address,address)\""
                            },
                            "value": "log(address,uint,address,address)"
                          },
                          {
                            "id": 20415,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20402,
                            "src": "57534:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20416,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20404,
                            "src": "57538:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20417,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20406,
                            "src": "57542:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20418,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20408,
                            "src": "57546:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ec24846f1ed52bfa5dc64139c1bf8b03f991fdd5156eccb50dfe44ca5a2ca40e",
                              "typeString": "literal_string \"log(address,uint,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20412,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57473:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57477:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57473:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57473:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20411,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "57457:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57457:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20421,
                  "nodeType": "ExpressionStatement",
                  "src": "57457:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57384:3:15",
            "parameters": {
              "id": 20409,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20402,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57396:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20423,
                  "src": "57388:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20401,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57388:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20404,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57405:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20423,
                  "src": "57400:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20403,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "57400:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20406,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57417:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20423,
                  "src": "57409:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20405,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57409:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20408,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57429:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20423,
                  "src": "57421:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20407,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57421:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57387:45:15"
            },
            "returnParameters": {
              "id": 20410,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57447:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20446,
            "nodeType": "FunctionDefinition",
            "src": "57563:181:15",
            "nodes": [],
            "body": {
              "id": 20445,
              "nodeType": "Block",
              "src": "57638:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e742c75696e7429",
                            "id": 20437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57688:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a4c92a60ad8c7136a44d442238a838fba251b421248205a77f1a522d55c988af",
                              "typeString": "literal_string \"log(address,string,uint,uint)\""
                            },
                            "value": "log(address,string,uint,uint)"
                          },
                          {
                            "id": 20438,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20425,
                            "src": "57721:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20439,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20427,
                            "src": "57725:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20440,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20429,
                            "src": "57729:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20441,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20431,
                            "src": "57733:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a4c92a60ad8c7136a44d442238a838fba251b421248205a77f1a522d55c988af",
                              "typeString": "literal_string \"log(address,string,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20435,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57664:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57668:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57664:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20442,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57664:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20434,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "57648:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57648:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20444,
                  "nodeType": "ExpressionStatement",
                  "src": "57648:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57572:3:15",
            "parameters": {
              "id": 20432,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20425,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57584:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20446,
                  "src": "57576:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20424,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57576:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20427,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57602:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20446,
                  "src": "57588:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20426,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57588:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20429,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57611:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20446,
                  "src": "57606:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20428,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "57606:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20431,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57620:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20446,
                  "src": "57615:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20430,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "57615:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57575:48:15"
            },
            "returnParameters": {
              "id": 20433,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57638:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20469,
            "nodeType": "FunctionDefinition",
            "src": "57750:192:15",
            "nodes": [],
            "body": {
              "id": 20468,
              "nodeType": "Block",
              "src": "57834:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e742c737472696e6729",
                            "id": 20460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "57884:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5d1365c94e45374e792b786edc547d0277c401db24a4303b5dd1e8a93df0829e",
                              "typeString": "literal_string \"log(address,string,uint,string)\""
                            },
                            "value": "log(address,string,uint,string)"
                          },
                          {
                            "id": 20461,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20448,
                            "src": "57919:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20462,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20450,
                            "src": "57923:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20463,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20452,
                            "src": "57927:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20464,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20454,
                            "src": "57931:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5d1365c94e45374e792b786edc547d0277c401db24a4303b5dd1e8a93df0829e",
                              "typeString": "literal_string \"log(address,string,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20458,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "57860:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "57864:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "57860:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "57860:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20457,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "57844:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "57844:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20467,
                  "nodeType": "ExpressionStatement",
                  "src": "57844:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57759:3:15",
            "parameters": {
              "id": 20455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20448,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57771:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20469,
                  "src": "57763:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20447,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57763:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20450,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57789:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20469,
                  "src": "57775:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20449,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57775:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20452,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57798:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20469,
                  "src": "57793:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20451,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "57793:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20454,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "57816:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20469,
                  "src": "57802:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20453,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57802:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57762:57:15"
            },
            "returnParameters": {
              "id": 20456,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "57834:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20492,
            "nodeType": "FunctionDefinition",
            "src": "57948:181:15",
            "nodes": [],
            "body": {
              "id": 20491,
              "nodeType": "Block",
              "src": "58023:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e742c626f6f6c29",
                            "id": 20483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58073:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7e250d5bf3975165268961c2b6dbe143f053bed03d903630f547f1fbab28b895",
                              "typeString": "literal_string \"log(address,string,uint,bool)\""
                            },
                            "value": "log(address,string,uint,bool)"
                          },
                          {
                            "id": 20484,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20471,
                            "src": "58106:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20485,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20473,
                            "src": "58110:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20486,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20475,
                            "src": "58114:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20487,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20477,
                            "src": "58118:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_7e250d5bf3975165268961c2b6dbe143f053bed03d903630f547f1fbab28b895",
                              "typeString": "literal_string \"log(address,string,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20481,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58049:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58053:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58049:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58049:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20480,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "58033:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58033:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20490,
                  "nodeType": "ExpressionStatement",
                  "src": "58033:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "57957:3:15",
            "parameters": {
              "id": 20478,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20471,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "57969:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20492,
                  "src": "57961:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20470,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "57961:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20473,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "57987:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20492,
                  "src": "57973:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20472,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "57973:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20475,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "57996:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20492,
                  "src": "57991:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20474,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "57991:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20477,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58005:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20492,
                  "src": "58000:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20476,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "58000:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "57960:48:15"
            },
            "returnParameters": {
              "id": 20479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58023:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20515,
            "nodeType": "FunctionDefinition",
            "src": "58135:187:15",
            "nodes": [],
            "body": {
              "id": 20514,
              "nodeType": "Block",
              "src": "58213:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c75696e742c6164647265737329",
                            "id": 20506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58263:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dfd7d80b4150ea6b0b2772758d6e66d8c7f141bfd7de11119a8fee2a703664e4",
                              "typeString": "literal_string \"log(address,string,uint,address)\""
                            },
                            "value": "log(address,string,uint,address)"
                          },
                          {
                            "id": 20507,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20494,
                            "src": "58299:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20508,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20496,
                            "src": "58303:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20509,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20498,
                            "src": "58307:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20510,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20500,
                            "src": "58311:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dfd7d80b4150ea6b0b2772758d6e66d8c7f141bfd7de11119a8fee2a703664e4",
                              "typeString": "literal_string \"log(address,string,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20504,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58239:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58243:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58239:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58239:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20503,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "58223:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58223:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20513,
                  "nodeType": "ExpressionStatement",
                  "src": "58223:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58144:3:15",
            "parameters": {
              "id": 20501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20494,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58156:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20515,
                  "src": "58148:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20493,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58148:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20496,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58174:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20515,
                  "src": "58160:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20495,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58160:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20498,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58183:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20515,
                  "src": "58178:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20497,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "58178:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20500,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58195:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20515,
                  "src": "58187:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20499,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58187:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58147:51:15"
            },
            "returnParameters": {
              "id": 20502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58213:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20538,
            "nodeType": "FunctionDefinition",
            "src": "58328:192:15",
            "nodes": [],
            "body": {
              "id": 20537,
              "nodeType": "Block",
              "src": "58412:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c75696e7429",
                            "id": 20529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58462:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a14fd039ae37435afa9d1674d6d48b37ffbd5da4cd9166a3f673f5f0db01a4c5",
                              "typeString": "literal_string \"log(address,string,string,uint)\""
                            },
                            "value": "log(address,string,string,uint)"
                          },
                          {
                            "id": 20530,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20517,
                            "src": "58497:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20531,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20519,
                            "src": "58501:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20532,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20521,
                            "src": "58505:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20533,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20523,
                            "src": "58509:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a14fd039ae37435afa9d1674d6d48b37ffbd5da4cd9166a3f673f5f0db01a4c5",
                              "typeString": "literal_string \"log(address,string,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20527,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58438:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58442:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58438:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58438:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20526,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "58422:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58422:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20536,
                  "nodeType": "ExpressionStatement",
                  "src": "58422:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58337:3:15",
            "parameters": {
              "id": 20524,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20517,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58349:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20538,
                  "src": "58341:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20516,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58341:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20519,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58367:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20538,
                  "src": "58353:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20518,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58353:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20521,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58385:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20538,
                  "src": "58371:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20520,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58371:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20523,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58394:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20538,
                  "src": "58389:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20522,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "58389:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58340:57:15"
            },
            "returnParameters": {
              "id": 20525,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58412:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20561,
            "nodeType": "FunctionDefinition",
            "src": "58526:203:15",
            "nodes": [],
            "body": {
              "id": 20560,
              "nodeType": "Block",
              "src": "58619:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c737472696e6729",
                            "id": 20552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58669:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5d02c50b371ad9a1f5c638dc99b5e9b545011f148f0be5233c530a4b2a12665c",
                              "typeString": "literal_string \"log(address,string,string,string)\""
                            },
                            "value": "log(address,string,string,string)"
                          },
                          {
                            "id": 20553,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20540,
                            "src": "58706:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20554,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20542,
                            "src": "58710:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20555,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20544,
                            "src": "58714:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20556,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20546,
                            "src": "58718:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5d02c50b371ad9a1f5c638dc99b5e9b545011f148f0be5233c530a4b2a12665c",
                              "typeString": "literal_string \"log(address,string,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20550,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58645:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20551,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58649:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58645:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58645:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20549,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "58629:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58629:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20559,
                  "nodeType": "ExpressionStatement",
                  "src": "58629:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58535:3:15",
            "parameters": {
              "id": 20547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20540,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58547:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20561,
                  "src": "58539:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20539,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58539:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20542,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58565:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20561,
                  "src": "58551:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20541,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58551:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20544,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58583:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20561,
                  "src": "58569:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20543,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58569:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20546,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58601:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20561,
                  "src": "58587:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20545,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58587:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58538:66:15"
            },
            "returnParameters": {
              "id": 20548,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58619:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20584,
            "nodeType": "FunctionDefinition",
            "src": "58735:192:15",
            "nodes": [],
            "body": {
              "id": 20583,
              "nodeType": "Block",
              "src": "58819:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c626f6f6c29",
                            "id": 20575,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "58869:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_35a5071fa9f4610e50772083182f21e949e7a02301a3936e315dd1c4fc39a9ed",
                              "typeString": "literal_string \"log(address,string,string,bool)\""
                            },
                            "value": "log(address,string,string,bool)"
                          },
                          {
                            "id": 20576,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20563,
                            "src": "58904:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20577,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20565,
                            "src": "58908:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20578,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20567,
                            "src": "58912:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20579,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20569,
                            "src": "58916:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_35a5071fa9f4610e50772083182f21e949e7a02301a3936e315dd1c4fc39a9ed",
                              "typeString": "literal_string \"log(address,string,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20573,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "58845:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20574,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "58849:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "58845:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20580,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "58845:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20572,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "58829:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "58829:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20582,
                  "nodeType": "ExpressionStatement",
                  "src": "58829:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58744:3:15",
            "parameters": {
              "id": 20570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20563,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58756:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20584,
                  "src": "58748:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20562,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58748:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20565,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58774:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20584,
                  "src": "58760:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20564,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58760:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20567,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58792:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20584,
                  "src": "58778:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20566,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58778:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20569,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "58801:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20584,
                  "src": "58796:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20568,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "58796:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58747:57:15"
            },
            "returnParameters": {
              "id": 20571,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "58819:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20607,
            "nodeType": "FunctionDefinition",
            "src": "58933:198:15",
            "nodes": [],
            "body": {
              "id": 20606,
              "nodeType": "Block",
              "src": "59020:111:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c6164647265737329",
                            "id": 20598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59070:36:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a04e2f87a739673cc9223810c24b00b35c6b2c9f3ef123cc82866752e1fa816f",
                              "typeString": "literal_string \"log(address,string,string,address)\""
                            },
                            "value": "log(address,string,string,address)"
                          },
                          {
                            "id": 20599,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20586,
                            "src": "59108:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20600,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20588,
                            "src": "59112:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20601,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20590,
                            "src": "59116:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20602,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20592,
                            "src": "59120:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a04e2f87a739673cc9223810c24b00b35c6b2c9f3ef123cc82866752e1fa816f",
                              "typeString": "literal_string \"log(address,string,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20596,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59046:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59050:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59046:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20603,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59046:77:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20595,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "59030:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20604,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59030:94:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20605,
                  "nodeType": "ExpressionStatement",
                  "src": "59030:94:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "58942:3:15",
            "parameters": {
              "id": 20593,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20586,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "58954:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20607,
                  "src": "58946:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20585,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58946:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20588,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "58972:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20607,
                  "src": "58958:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20587,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58958:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20590,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "58990:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20607,
                  "src": "58976:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20589,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "58976:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20592,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59002:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20607,
                  "src": "58994:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20591,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "58994:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "58945:60:15"
            },
            "returnParameters": {
              "id": 20594,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59020:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20630,
            "nodeType": "FunctionDefinition",
            "src": "59137:181:15",
            "nodes": [],
            "body": {
              "id": 20629,
              "nodeType": "Block",
              "src": "59212:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c75696e7429",
                            "id": 20621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59262:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e720521cc58e36659b0c45689a38054bd7300ff30d5ec0cfec7bae3dc2e9689a",
                              "typeString": "literal_string \"log(address,string,bool,uint)\""
                            },
                            "value": "log(address,string,bool,uint)"
                          },
                          {
                            "id": 20622,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20609,
                            "src": "59295:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20623,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20611,
                            "src": "59299:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20624,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20613,
                            "src": "59303:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20625,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20615,
                            "src": "59307:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_e720521cc58e36659b0c45689a38054bd7300ff30d5ec0cfec7bae3dc2e9689a",
                              "typeString": "literal_string \"log(address,string,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20619,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59238:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59242:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59238:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20626,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59238:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20618,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "59222:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20627,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59222:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20628,
                  "nodeType": "ExpressionStatement",
                  "src": "59222:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59146:3:15",
            "parameters": {
              "id": 20616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20609,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59158:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20630,
                  "src": "59150:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20608,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59150:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20611,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59176:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20630,
                  "src": "59162:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20610,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59162:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20613,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59185:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20630,
                  "src": "59180:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20612,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "59180:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20615,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59194:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20630,
                  "src": "59189:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20614,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "59189:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59149:48:15"
            },
            "returnParameters": {
              "id": 20617,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59212:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20653,
            "nodeType": "FunctionDefinition",
            "src": "59324:192:15",
            "nodes": [],
            "body": {
              "id": 20652,
              "nodeType": "Block",
              "src": "59408:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c737472696e6729",
                            "id": 20644,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59458:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bc0b61fe9497b47eb6a51a5a6a4bf26b32ddcbc9407ccae8cc7de64b3e3d84cc",
                              "typeString": "literal_string \"log(address,string,bool,string)\""
                            },
                            "value": "log(address,string,bool,string)"
                          },
                          {
                            "id": 20645,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20632,
                            "src": "59493:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20646,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20634,
                            "src": "59497:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20647,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20636,
                            "src": "59501:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20648,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20638,
                            "src": "59505:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_bc0b61fe9497b47eb6a51a5a6a4bf26b32ddcbc9407ccae8cc7de64b3e3d84cc",
                              "typeString": "literal_string \"log(address,string,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20642,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59434:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59438:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59434:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59434:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20641,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "59418:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59418:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20651,
                  "nodeType": "ExpressionStatement",
                  "src": "59418:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59333:3:15",
            "parameters": {
              "id": 20639,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20632,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59345:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20653,
                  "src": "59337:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20631,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59337:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20634,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59363:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20653,
                  "src": "59349:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20633,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59349:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20636,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59372:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20653,
                  "src": "59367:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20635,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "59367:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20638,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59390:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20653,
                  "src": "59376:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20637,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59376:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59336:57:15"
            },
            "returnParameters": {
              "id": 20640,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59408:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20676,
            "nodeType": "FunctionDefinition",
            "src": "59522:181:15",
            "nodes": [],
            "body": {
              "id": 20675,
              "nodeType": "Block",
              "src": "59597:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c626f6f6c29",
                            "id": 20667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59647:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5f1d5c9f0de8c048364058d1d6842804ada33dbc34bf9eaff8f2be978f384e08",
                              "typeString": "literal_string \"log(address,string,bool,bool)\""
                            },
                            "value": "log(address,string,bool,bool)"
                          },
                          {
                            "id": 20668,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20655,
                            "src": "59680:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20669,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20657,
                            "src": "59684:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20670,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20659,
                            "src": "59688:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20671,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20661,
                            "src": "59692:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_5f1d5c9f0de8c048364058d1d6842804ada33dbc34bf9eaff8f2be978f384e08",
                              "typeString": "literal_string \"log(address,string,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20665,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59623:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59627:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59623:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59623:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20664,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "59607:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20673,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59607:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20674,
                  "nodeType": "ExpressionStatement",
                  "src": "59607:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59531:3:15",
            "parameters": {
              "id": 20662,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20655,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59543:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20676,
                  "src": "59535:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20654,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59535:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20657,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59561:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20676,
                  "src": "59547:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20656,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59547:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20659,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59570:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20676,
                  "src": "59565:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20658,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "59565:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20661,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59579:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20676,
                  "src": "59574:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20660,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "59574:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59534:48:15"
            },
            "returnParameters": {
              "id": 20663,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59597:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20699,
            "nodeType": "FunctionDefinition",
            "src": "59709:187:15",
            "nodes": [],
            "body": {
              "id": 20698,
              "nodeType": "Block",
              "src": "59787:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c6164647265737329",
                            "id": 20690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "59837:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_205871c2f2d320acdd350939b5fc035cc20b1a9cc058fb26f1c9fb3d2ba59970",
                              "typeString": "literal_string \"log(address,string,bool,address)\""
                            },
                            "value": "log(address,string,bool,address)"
                          },
                          {
                            "id": 20691,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20678,
                            "src": "59873:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20692,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20680,
                            "src": "59877:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20693,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20682,
                            "src": "59881:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20694,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20684,
                            "src": "59885:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_205871c2f2d320acdd350939b5fc035cc20b1a9cc058fb26f1c9fb3d2ba59970",
                              "typeString": "literal_string \"log(address,string,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20688,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "59813:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "59817:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "59813:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "59813:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20687,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "59797:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20696,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59797:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20697,
                  "nodeType": "ExpressionStatement",
                  "src": "59797:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59718:3:15",
            "parameters": {
              "id": 20685,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20678,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59730:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20699,
                  "src": "59722:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20677,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59722:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20680,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59748:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20699,
                  "src": "59734:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20679,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59734:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20682,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59757:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20699,
                  "src": "59752:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20681,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "59752:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20684,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59769:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20699,
                  "src": "59761:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20683,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59761:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59721:51:15"
            },
            "returnParameters": {
              "id": 20686,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59787:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20722,
            "nodeType": "FunctionDefinition",
            "src": "59902:187:15",
            "nodes": [],
            "body": {
              "id": 20721,
              "nodeType": "Block",
              "src": "59980:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c75696e7429",
                            "id": 20713,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60030:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8c1933a9a9c61e3dc8d3ebdfa929712b21dab3dcf7188e7d35cbf8aaaf476582",
                              "typeString": "literal_string \"log(address,string,address,uint)\""
                            },
                            "value": "log(address,string,address,uint)"
                          },
                          {
                            "id": 20714,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20701,
                            "src": "60066:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20715,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20703,
                            "src": "60070:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20716,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20705,
                            "src": "60074:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20717,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20707,
                            "src": "60078:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8c1933a9a9c61e3dc8d3ebdfa929712b21dab3dcf7188e7d35cbf8aaaf476582",
                              "typeString": "literal_string \"log(address,string,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20711,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60006:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60010:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60006:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60006:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20710,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "59990:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "59990:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20720,
                  "nodeType": "ExpressionStatement",
                  "src": "59990:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "59911:3:15",
            "parameters": {
              "id": 20708,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20701,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "59923:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20722,
                  "src": "59915:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20700,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59915:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20703,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "59941:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20722,
                  "src": "59927:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20702,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "59927:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20705,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "59953:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20722,
                  "src": "59945:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20704,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "59945:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20707,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "59962:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20722,
                  "src": "59957:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20706,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "59957:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "59914:51:15"
            },
            "returnParameters": {
              "id": 20709,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "59980:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20745,
            "nodeType": "FunctionDefinition",
            "src": "60095:198:15",
            "nodes": [],
            "body": {
              "id": 20744,
              "nodeType": "Block",
              "src": "60182:111:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c737472696e6729",
                            "id": 20736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60232:36:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f7e3624510fc5618feb98a49f5d4404e3749dacbdc916c267fea7b2051a08dea",
                              "typeString": "literal_string \"log(address,string,address,string)\""
                            },
                            "value": "log(address,string,address,string)"
                          },
                          {
                            "id": 20737,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20724,
                            "src": "60270:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20738,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20726,
                            "src": "60274:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20739,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20728,
                            "src": "60278:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20740,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20730,
                            "src": "60282:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f7e3624510fc5618feb98a49f5d4404e3749dacbdc916c267fea7b2051a08dea",
                              "typeString": "literal_string \"log(address,string,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20734,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60208:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60212:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60208:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60208:77:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20733,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "60192:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60192:94:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20743,
                  "nodeType": "ExpressionStatement",
                  "src": "60192:94:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60104:3:15",
            "parameters": {
              "id": 20731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20724,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60116:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20745,
                  "src": "60108:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20723,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60108:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20726,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60134:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20745,
                  "src": "60120:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20725,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60120:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20728,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60146:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20745,
                  "src": "60138:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20727,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60138:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20730,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60164:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20745,
                  "src": "60150:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20729,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60150:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60107:60:15"
            },
            "returnParameters": {
              "id": 20732,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60182:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20768,
            "nodeType": "FunctionDefinition",
            "src": "60299:187:15",
            "nodes": [],
            "body": {
              "id": 20767,
              "nodeType": "Block",
              "src": "60377:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c626f6f6c29",
                            "id": 20759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60427:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0df12b7620e0bad204ac79fe9930fef9b9a40702161764a681594d50d657b081",
                              "typeString": "literal_string \"log(address,string,address,bool)\""
                            },
                            "value": "log(address,string,address,bool)"
                          },
                          {
                            "id": 20760,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20747,
                            "src": "60463:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20761,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20749,
                            "src": "60467:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20762,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20751,
                            "src": "60471:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20763,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20753,
                            "src": "60475:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0df12b7620e0bad204ac79fe9930fef9b9a40702161764a681594d50d657b081",
                              "typeString": "literal_string \"log(address,string,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20757,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60403:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60407:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60403:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20764,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60403:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20756,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "60387:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20765,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60387:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20766,
                  "nodeType": "ExpressionStatement",
                  "src": "60387:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60308:3:15",
            "parameters": {
              "id": 20754,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20747,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60320:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20768,
                  "src": "60312:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20746,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60312:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20749,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60338:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20768,
                  "src": "60324:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20748,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60324:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20751,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60350:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20768,
                  "src": "60342:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20750,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60342:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20753,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60359:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20768,
                  "src": "60354:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20752,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "60354:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60311:51:15"
            },
            "returnParameters": {
              "id": 20755,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60377:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20791,
            "nodeType": "FunctionDefinition",
            "src": "60492:193:15",
            "nodes": [],
            "body": {
              "id": 20790,
              "nodeType": "Block",
              "src": "60573:112:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c6164647265737329",
                            "id": 20782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60623:37:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0d36fa2022fafb45586a59914be3ad4c57b76e89535385dcff89c28c80605121",
                              "typeString": "literal_string \"log(address,string,address,address)\""
                            },
                            "value": "log(address,string,address,address)"
                          },
                          {
                            "id": 20783,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20770,
                            "src": "60662:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20784,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20772,
                            "src": "60666:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20785,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20774,
                            "src": "60670:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20786,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20776,
                            "src": "60674:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0d36fa2022fafb45586a59914be3ad4c57b76e89535385dcff89c28c80605121",
                              "typeString": "literal_string \"log(address,string,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20780,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60599:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20781,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60603:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60599:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20787,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60599:78:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20779,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "60583:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20788,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60583:95:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20789,
                  "nodeType": "ExpressionStatement",
                  "src": "60583:95:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60501:3:15",
            "parameters": {
              "id": 20777,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20770,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60513:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20791,
                  "src": "60505:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20769,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60505:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20772,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60531:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20791,
                  "src": "60517:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20771,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60517:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20774,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60543:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20791,
                  "src": "60535:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20773,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60535:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20776,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60555:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20791,
                  "src": "60547:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20775,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60547:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60504:54:15"
            },
            "returnParameters": {
              "id": 20778,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60573:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20814,
            "nodeType": "FunctionDefinition",
            "src": "60691:170:15",
            "nodes": [],
            "body": {
              "id": 20813,
              "nodeType": "Block",
              "src": "60757:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e742c75696e7429",
                            "id": 20805,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60807:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c210a01e60a7d88137859e75abc2d14430087408747ac6787f0acb2f0f8bfd59",
                              "typeString": "literal_string \"log(address,bool,uint,uint)\""
                            },
                            "value": "log(address,bool,uint,uint)"
                          },
                          {
                            "id": 20806,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20793,
                            "src": "60838:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20807,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20795,
                            "src": "60842:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20808,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20797,
                            "src": "60846:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20809,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20799,
                            "src": "60850:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c210a01e60a7d88137859e75abc2d14430087408747ac6787f0acb2f0f8bfd59",
                              "typeString": "literal_string \"log(address,bool,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20803,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60783:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60787:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60783:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60783:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20802,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "60767:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20811,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60767:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20812,
                  "nodeType": "ExpressionStatement",
                  "src": "60767:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60700:3:15",
            "parameters": {
              "id": 20800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20793,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60712:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20814,
                  "src": "60704:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20792,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60704:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20795,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60721:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20814,
                  "src": "60716:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20794,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "60716:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20797,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60730:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20814,
                  "src": "60725:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20796,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "60725:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20799,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60739:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20814,
                  "src": "60734:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20798,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "60734:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60703:39:15"
            },
            "returnParameters": {
              "id": 20801,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60757:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20837,
            "nodeType": "FunctionDefinition",
            "src": "60867:181:15",
            "nodes": [],
            "body": {
              "id": 20836,
              "nodeType": "Block",
              "src": "60942:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e742c737472696e6729",
                            "id": 20828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "60992:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9b588eccef132ec49572951d33e9b0d1b814d54c82133831f78cdc5d923bc6e6",
                              "typeString": "literal_string \"log(address,bool,uint,string)\""
                            },
                            "value": "log(address,bool,uint,string)"
                          },
                          {
                            "id": 20829,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20816,
                            "src": "61025:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20830,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20818,
                            "src": "61029:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20831,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20820,
                            "src": "61033:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20832,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20822,
                            "src": "61037:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9b588eccef132ec49572951d33e9b0d1b814d54c82133831f78cdc5d923bc6e6",
                              "typeString": "literal_string \"log(address,bool,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20826,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "60968:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "60972:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "60968:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20833,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "60968:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20825,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "60952:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "60952:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20835,
                  "nodeType": "ExpressionStatement",
                  "src": "60952:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "60876:3:15",
            "parameters": {
              "id": 20823,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20816,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "60888:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20837,
                  "src": "60880:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20815,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "60880:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20818,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "60897:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20837,
                  "src": "60892:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20817,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "60892:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20820,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "60906:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20837,
                  "src": "60901:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20819,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "60901:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20822,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "60924:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20837,
                  "src": "60910:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20821,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "60910:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "60879:48:15"
            },
            "returnParameters": {
              "id": 20824,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "60942:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20860,
            "nodeType": "FunctionDefinition",
            "src": "61054:170:15",
            "nodes": [],
            "body": {
              "id": 20859,
              "nodeType": "Block",
              "src": "61120:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e742c626f6f6c29",
                            "id": 20851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61170:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_85cdc5af22f2a2b52749c228b5bc379bac815d0d3575c2899b6657bce00fab33",
                              "typeString": "literal_string \"log(address,bool,uint,bool)\""
                            },
                            "value": "log(address,bool,uint,bool)"
                          },
                          {
                            "id": 20852,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20839,
                            "src": "61201:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20853,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20841,
                            "src": "61205:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20854,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20843,
                            "src": "61209:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20855,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20845,
                            "src": "61213:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_85cdc5af22f2a2b52749c228b5bc379bac815d0d3575c2899b6657bce00fab33",
                              "typeString": "literal_string \"log(address,bool,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20849,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61146:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61150:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61146:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20856,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61146:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20848,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "61130:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61130:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20858,
                  "nodeType": "ExpressionStatement",
                  "src": "61130:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61063:3:15",
            "parameters": {
              "id": 20846,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20839,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61075:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20860,
                  "src": "61067:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20838,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61067:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20841,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61084:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20860,
                  "src": "61079:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20840,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61079:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20843,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61093:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20860,
                  "src": "61088:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20842,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "61088:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20845,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61102:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20860,
                  "src": "61097:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20844,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61097:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61066:39:15"
            },
            "returnParameters": {
              "id": 20847,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61120:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20883,
            "nodeType": "FunctionDefinition",
            "src": "61230:176:15",
            "nodes": [],
            "body": {
              "id": 20882,
              "nodeType": "Block",
              "src": "61299:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e742c6164647265737329",
                            "id": 20874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61349:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0d8ce61ee7d058fd1e588343a35fb1aff71b8e7f74d553220d0e20088cb908bf",
                              "typeString": "literal_string \"log(address,bool,uint,address)\""
                            },
                            "value": "log(address,bool,uint,address)"
                          },
                          {
                            "id": 20875,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20862,
                            "src": "61383:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20876,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20864,
                            "src": "61387:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20877,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20866,
                            "src": "61391:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 20878,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20868,
                            "src": "61395:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0d8ce61ee7d058fd1e588343a35fb1aff71b8e7f74d553220d0e20088cb908bf",
                              "typeString": "literal_string \"log(address,bool,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20872,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61325:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61329:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61325:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20879,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61325:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20871,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "61309:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20880,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61309:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20881,
                  "nodeType": "ExpressionStatement",
                  "src": "61309:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61239:3:15",
            "parameters": {
              "id": 20869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20862,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61251:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20883,
                  "src": "61243:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20861,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61243:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20864,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61260:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20883,
                  "src": "61255:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20863,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61255:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20866,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61269:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20883,
                  "src": "61264:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20865,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "61264:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20868,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61281:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20883,
                  "src": "61273:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20867,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61273:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61242:42:15"
            },
            "returnParameters": {
              "id": 20870,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61299:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20906,
            "nodeType": "FunctionDefinition",
            "src": "61412:181:15",
            "nodes": [],
            "body": {
              "id": 20905,
              "nodeType": "Block",
              "src": "61487:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c75696e7429",
                            "id": 20897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61537:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9e127b6e4348bc33b3ea7f05f6479d3e1b1fe2b3727e1f4ba94b6a36e7abac9b",
                              "typeString": "literal_string \"log(address,bool,string,uint)\""
                            },
                            "value": "log(address,bool,string,uint)"
                          },
                          {
                            "id": 20898,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20885,
                            "src": "61570:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20899,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20887,
                            "src": "61574:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20900,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20889,
                            "src": "61578:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20901,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20891,
                            "src": "61582:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9e127b6e4348bc33b3ea7f05f6479d3e1b1fe2b3727e1f4ba94b6a36e7abac9b",
                              "typeString": "literal_string \"log(address,bool,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20895,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61513:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61517:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61513:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20902,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61513:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20894,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "61497:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61497:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20904,
                  "nodeType": "ExpressionStatement",
                  "src": "61497:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61421:3:15",
            "parameters": {
              "id": 20892,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20885,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61433:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20906,
                  "src": "61425:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20884,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61425:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20887,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61442:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20906,
                  "src": "61437:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20886,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61437:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20889,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61460:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20906,
                  "src": "61446:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20888,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61446:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20891,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61469:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20906,
                  "src": "61464:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20890,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "61464:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61424:48:15"
            },
            "returnParameters": {
              "id": 20893,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61487:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20929,
            "nodeType": "FunctionDefinition",
            "src": "61599:192:15",
            "nodes": [],
            "body": {
              "id": 20928,
              "nodeType": "Block",
              "src": "61683:108:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c737472696e6729",
                            "id": 20920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61733:33:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_475c5c33f91155b7a0e86c9fac7985c60ab58f4bfb411ee9b31d994a7fc95d1f",
                              "typeString": "literal_string \"log(address,bool,string,string)\""
                            },
                            "value": "log(address,bool,string,string)"
                          },
                          {
                            "id": 20921,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20908,
                            "src": "61768:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20922,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20910,
                            "src": "61772:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20923,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20912,
                            "src": "61776:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20924,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20914,
                            "src": "61780:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_475c5c33f91155b7a0e86c9fac7985c60ab58f4bfb411ee9b31d994a7fc95d1f",
                              "typeString": "literal_string \"log(address,bool,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 20918,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61709:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61713:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61709:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61709:74:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20917,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "61693:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20926,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61693:91:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20927,
                  "nodeType": "ExpressionStatement",
                  "src": "61693:91:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61608:3:15",
            "parameters": {
              "id": 20915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20908,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61620:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20929,
                  "src": "61612:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20907,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61612:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20910,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61629:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20929,
                  "src": "61624:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20909,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61624:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20912,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61647:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20929,
                  "src": "61633:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20911,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61633:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20914,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61665:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20929,
                  "src": "61651:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20913,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61651:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61611:57:15"
            },
            "returnParameters": {
              "id": 20916,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61683:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20952,
            "nodeType": "FunctionDefinition",
            "src": "61797:181:15",
            "nodes": [],
            "body": {
              "id": 20951,
              "nodeType": "Block",
              "src": "61872:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c626f6f6c29",
                            "id": 20943,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "61922:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_50ad461db24803fc9b2ba76f072192e0a4d8fbb3667a50c400f504443380890f",
                              "typeString": "literal_string \"log(address,bool,string,bool)\""
                            },
                            "value": "log(address,bool,string,bool)"
                          },
                          {
                            "id": 20944,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20931,
                            "src": "61955:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20945,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20933,
                            "src": "61959:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20946,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20935,
                            "src": "61963:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20947,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20937,
                            "src": "61967:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_50ad461db24803fc9b2ba76f072192e0a4d8fbb3667a50c400f504443380890f",
                              "typeString": "literal_string \"log(address,bool,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 20941,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "61898:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "61902:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "61898:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20948,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "61898:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20940,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "61882:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20949,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "61882:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20950,
                  "nodeType": "ExpressionStatement",
                  "src": "61882:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61806:3:15",
            "parameters": {
              "id": 20938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20931,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "61818:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20952,
                  "src": "61810:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20930,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61810:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20933,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "61827:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20952,
                  "src": "61822:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20932,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61822:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20935,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "61845:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20952,
                  "src": "61831:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20934,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "61831:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20937,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "61854:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20952,
                  "src": "61849:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20936,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "61849:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61809:48:15"
            },
            "returnParameters": {
              "id": 20939,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "61872:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20975,
            "nodeType": "FunctionDefinition",
            "src": "61984:187:15",
            "nodes": [],
            "body": {
              "id": 20974,
              "nodeType": "Block",
              "src": "62062:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c6164647265737329",
                            "id": 20966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62112:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_19fd495659df511498cf8dde03672830bd109ef2d9b9bec18e72190917c328bc",
                              "typeString": "literal_string \"log(address,bool,string,address)\""
                            },
                            "value": "log(address,bool,string,address)"
                          },
                          {
                            "id": 20967,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20954,
                            "src": "62148:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20968,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20956,
                            "src": "62152:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20969,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20958,
                            "src": "62156:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 20970,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20960,
                            "src": "62160:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_19fd495659df511498cf8dde03672830bd109ef2d9b9bec18e72190917c328bc",
                              "typeString": "literal_string \"log(address,bool,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 20964,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62088:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62092:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62088:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20971,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62088:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20963,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "62072:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20972,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62072:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20973,
                  "nodeType": "ExpressionStatement",
                  "src": "62072:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "61993:3:15",
            "parameters": {
              "id": 20961,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20954,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62005:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20975,
                  "src": "61997:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "61997:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20956,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62014:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20975,
                  "src": "62009:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20955,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62009:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20958,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62032:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20975,
                  "src": "62018:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 20957,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "62018:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20960,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62044:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20975,
                  "src": "62036:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20959,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62036:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "61996:51:15"
            },
            "returnParameters": {
              "id": 20962,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62062:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 20998,
            "nodeType": "FunctionDefinition",
            "src": "62177:170:15",
            "nodes": [],
            "body": {
              "id": 20997,
              "nodeType": "Block",
              "src": "62243:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c75696e7429",
                            "id": 20989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62293:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cfb587569c9e063cd7daed07e27d9193980aad24c48787cb6531c47fa694e463",
                              "typeString": "literal_string \"log(address,bool,bool,uint)\""
                            },
                            "value": "log(address,bool,bool,uint)"
                          },
                          {
                            "id": 20990,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20977,
                            "src": "62324:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 20991,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20979,
                            "src": "62328:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20992,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20981,
                            "src": "62332:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 20993,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20983,
                            "src": "62336:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cfb587569c9e063cd7daed07e27d9193980aad24c48787cb6531c47fa694e463",
                              "typeString": "literal_string \"log(address,bool,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 20987,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62269:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 20988,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62273:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62269:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 20994,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62269:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 20986,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "62253:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 20995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62253:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 20996,
                  "nodeType": "ExpressionStatement",
                  "src": "62253:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62186:3:15",
            "parameters": {
              "id": 20984,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 20977,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62198:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20998,
                  "src": "62190:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20976,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62190:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20979,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62207:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20998,
                  "src": "62202:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20978,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62202:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20981,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62216:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20998,
                  "src": "62211:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 20980,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62211:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 20983,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62225:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 20998,
                  "src": "62220:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20982,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "62220:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62189:39:15"
            },
            "returnParameters": {
              "id": 20985,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62243:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21021,
            "nodeType": "FunctionDefinition",
            "src": "62353:181:15",
            "nodes": [],
            "body": {
              "id": 21020,
              "nodeType": "Block",
              "src": "62428:106:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c737472696e6729",
                            "id": 21012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62478:31:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dfc4a2e8c56809b44edbbc6d92d0a8441e551ad5387596bf8b629c56d9a91300",
                              "typeString": "literal_string \"log(address,bool,bool,string)\""
                            },
                            "value": "log(address,bool,bool,string)"
                          },
                          {
                            "id": 21013,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21000,
                            "src": "62511:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21014,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21002,
                            "src": "62515:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21015,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21004,
                            "src": "62519:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21016,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21006,
                            "src": "62523:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dfc4a2e8c56809b44edbbc6d92d0a8441e551ad5387596bf8b629c56d9a91300",
                              "typeString": "literal_string \"log(address,bool,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21010,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62454:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62458:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62454:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62454:72:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21009,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "62438:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62438:89:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21019,
                  "nodeType": "ExpressionStatement",
                  "src": "62438:89:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62362:3:15",
            "parameters": {
              "id": 21007,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21000,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62374:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21021,
                  "src": "62366:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 20999,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62366:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21002,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62383:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21021,
                  "src": "62378:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21001,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62378:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21004,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62392:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21021,
                  "src": "62387:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21003,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62387:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21006,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62410:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21021,
                  "src": "62396:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21005,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "62396:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62365:48:15"
            },
            "returnParameters": {
              "id": 21008,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62428:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21044,
            "nodeType": "FunctionDefinition",
            "src": "62540:170:15",
            "nodes": [],
            "body": {
              "id": 21043,
              "nodeType": "Block",
              "src": "62606:104:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c626f6f6c29",
                            "id": 21035,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62656:29:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cac434792b973db16714db96d2aeda353b2253f27255abe42b9960b2dc550634",
                              "typeString": "literal_string \"log(address,bool,bool,bool)\""
                            },
                            "value": "log(address,bool,bool,bool)"
                          },
                          {
                            "id": 21036,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21023,
                            "src": "62687:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21037,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21025,
                            "src": "62691:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21038,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21027,
                            "src": "62695:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21039,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21029,
                            "src": "62699:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cac434792b973db16714db96d2aeda353b2253f27255abe42b9960b2dc550634",
                              "typeString": "literal_string \"log(address,bool,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21033,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62632:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62636:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62632:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21040,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62632:70:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21032,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "62616:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21041,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62616:87:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21042,
                  "nodeType": "ExpressionStatement",
                  "src": "62616:87:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62549:3:15",
            "parameters": {
              "id": 21030,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21023,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62561:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21044,
                  "src": "62553:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21022,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62553:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21025,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62570:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21044,
                  "src": "62565:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21024,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62565:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21027,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62579:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21044,
                  "src": "62574:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21026,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62574:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21029,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62588:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21044,
                  "src": "62583:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21028,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62583:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62552:39:15"
            },
            "returnParameters": {
              "id": 21031,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62606:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21067,
            "nodeType": "FunctionDefinition",
            "src": "62716:176:15",
            "nodes": [],
            "body": {
              "id": 21066,
              "nodeType": "Block",
              "src": "62785:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c6164647265737329",
                            "id": 21058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "62835:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_cf394485abbd1f04b85b0f2c1a2cfc07e3d51c1c6f28386bf16d9e45161e8953",
                              "typeString": "literal_string \"log(address,bool,bool,address)\""
                            },
                            "value": "log(address,bool,bool,address)"
                          },
                          {
                            "id": 21059,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21046,
                            "src": "62869:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21060,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21048,
                            "src": "62873:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21061,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21050,
                            "src": "62877:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21062,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21052,
                            "src": "62881:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_cf394485abbd1f04b85b0f2c1a2cfc07e3d51c1c6f28386bf16d9e45161e8953",
                              "typeString": "literal_string \"log(address,bool,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21056,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62811:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62815:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62811:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21063,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62811:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21055,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "62795:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62795:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21065,
                  "nodeType": "ExpressionStatement",
                  "src": "62795:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62725:3:15",
            "parameters": {
              "id": 21053,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21046,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62737:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21067,
                  "src": "62729:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21045,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62729:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21048,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62746:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21067,
                  "src": "62741:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21047,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62741:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21050,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62755:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21067,
                  "src": "62750:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21049,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62750:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21052,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62767:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21067,
                  "src": "62759:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21051,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62759:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62728:42:15"
            },
            "returnParameters": {
              "id": 21054,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62785:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21090,
            "nodeType": "FunctionDefinition",
            "src": "62898:176:15",
            "nodes": [],
            "body": {
              "id": 21089,
              "nodeType": "Block",
              "src": "62967:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c75696e7429",
                            "id": 21081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63017:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dc7116d2e67ccd625262e6814a6f82f2367beea9919409c81fcbb94bea1b6b84",
                              "typeString": "literal_string \"log(address,bool,address,uint)\""
                            },
                            "value": "log(address,bool,address,uint)"
                          },
                          {
                            "id": 21082,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21069,
                            "src": "63051:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21083,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21071,
                            "src": "63055:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21084,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21073,
                            "src": "63059:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21085,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21075,
                            "src": "63063:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_dc7116d2e67ccd625262e6814a6f82f2367beea9919409c81fcbb94bea1b6b84",
                              "typeString": "literal_string \"log(address,bool,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21079,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "62993:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "62997:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "62993:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "62993:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21078,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "62977:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "62977:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21088,
                  "nodeType": "ExpressionStatement",
                  "src": "62977:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "62907:3:15",
            "parameters": {
              "id": 21076,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21069,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "62919:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21090,
                  "src": "62911:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21068,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62911:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21071,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "62928:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21090,
                  "src": "62923:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21070,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "62923:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21073,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "62940:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21090,
                  "src": "62932:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21072,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "62932:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21075,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "62949:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21090,
                  "src": "62944:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21074,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "62944:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "62910:42:15"
            },
            "returnParameters": {
              "id": 21077,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "62967:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21113,
            "nodeType": "FunctionDefinition",
            "src": "63080:187:15",
            "nodes": [],
            "body": {
              "id": 21112,
              "nodeType": "Block",
              "src": "63158:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c737472696e6729",
                            "id": 21104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63208:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2dd778e616be9386b5911da1a074bbaf979640681783fca6396ea75c8caf6453",
                              "typeString": "literal_string \"log(address,bool,address,string)\""
                            },
                            "value": "log(address,bool,address,string)"
                          },
                          {
                            "id": 21105,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21092,
                            "src": "63244:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21106,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21094,
                            "src": "63248:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21107,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21096,
                            "src": "63252:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21108,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21098,
                            "src": "63256:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2dd778e616be9386b5911da1a074bbaf979640681783fca6396ea75c8caf6453",
                              "typeString": "literal_string \"log(address,bool,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21102,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63184:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63188:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63184:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21109,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63184:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21101,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "63168:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21110,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63168:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21111,
                  "nodeType": "ExpressionStatement",
                  "src": "63168:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63089:3:15",
            "parameters": {
              "id": 21099,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21092,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63101:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21113,
                  "src": "63093:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21091,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63093:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21094,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63110:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21113,
                  "src": "63105:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21093,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63105:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21096,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63122:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21113,
                  "src": "63114:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21095,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63114:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21098,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63140:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21113,
                  "src": "63126:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21097,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "63126:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63092:51:15"
            },
            "returnParameters": {
              "id": 21100,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63158:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21136,
            "nodeType": "FunctionDefinition",
            "src": "63273:176:15",
            "nodes": [],
            "body": {
              "id": 21135,
              "nodeType": "Block",
              "src": "63342:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c626f6f6c29",
                            "id": 21127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63392:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a6f50b0f122c916fe81861751b94bdddb5e453947768e8af206397bb510790b1",
                              "typeString": "literal_string \"log(address,bool,address,bool)\""
                            },
                            "value": "log(address,bool,address,bool)"
                          },
                          {
                            "id": 21128,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21115,
                            "src": "63426:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21129,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21117,
                            "src": "63430:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21130,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21119,
                            "src": "63434:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21131,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21121,
                            "src": "63438:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a6f50b0f122c916fe81861751b94bdddb5e453947768e8af206397bb510790b1",
                              "typeString": "literal_string \"log(address,bool,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21125,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63368:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63372:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63368:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21132,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63368:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21124,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "63352:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63352:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21134,
                  "nodeType": "ExpressionStatement",
                  "src": "63352:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63282:3:15",
            "parameters": {
              "id": 21122,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21115,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63294:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21136,
                  "src": "63286:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21114,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63286:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21117,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63303:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21136,
                  "src": "63298:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21116,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63298:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21119,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63315:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21136,
                  "src": "63307:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21118,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63307:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21121,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63324:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21136,
                  "src": "63319:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21120,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63319:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63285:42:15"
            },
            "returnParameters": {
              "id": 21123,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63342:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21159,
            "nodeType": "FunctionDefinition",
            "src": "63455:182:15",
            "nodes": [],
            "body": {
              "id": 21158,
              "nodeType": "Block",
              "src": "63527:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c6164647265737329",
                            "id": 21150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63577:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_660375ddb58761b4ce952ec7e1ae63efe9f8e9e69831fd72875968fec9046e35",
                              "typeString": "literal_string \"log(address,bool,address,address)\""
                            },
                            "value": "log(address,bool,address,address)"
                          },
                          {
                            "id": 21151,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21138,
                            "src": "63614:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21152,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21140,
                            "src": "63618:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21153,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21142,
                            "src": "63622:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21154,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21144,
                            "src": "63626:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_660375ddb58761b4ce952ec7e1ae63efe9f8e9e69831fd72875968fec9046e35",
                              "typeString": "literal_string \"log(address,bool,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21148,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63553:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63557:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63553:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63553:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21147,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "63537:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63537:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21157,
                  "nodeType": "ExpressionStatement",
                  "src": "63537:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63464:3:15",
            "parameters": {
              "id": 21145,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21138,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63476:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21159,
                  "src": "63468:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21137,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63468:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21140,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63485:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21159,
                  "src": "63480:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21139,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "63480:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21142,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63497:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21159,
                  "src": "63489:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21141,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63489:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21144,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63509:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21159,
                  "src": "63501:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21143,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63501:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63467:45:15"
            },
            "returnParameters": {
              "id": 21146,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63527:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21182,
            "nodeType": "FunctionDefinition",
            "src": "63643:176:15",
            "nodes": [],
            "body": {
              "id": 21181,
              "nodeType": "Block",
              "src": "63712:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e742c75696e7429",
                            "id": 21173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63762:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_54fdf3e4fb94f9bebc9a1c60d5b71090f9817e68730b5af20b69dff283044ed6",
                              "typeString": "literal_string \"log(address,address,uint,uint)\""
                            },
                            "value": "log(address,address,uint,uint)"
                          },
                          {
                            "id": 21174,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21161,
                            "src": "63796:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21175,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21163,
                            "src": "63800:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21176,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21165,
                            "src": "63804:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21177,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21167,
                            "src": "63808:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_54fdf3e4fb94f9bebc9a1c60d5b71090f9817e68730b5af20b69dff283044ed6",
                              "typeString": "literal_string \"log(address,address,uint,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21171,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63738:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63742:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63738:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21178,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63738:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21170,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "63722:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21179,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63722:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21180,
                  "nodeType": "ExpressionStatement",
                  "src": "63722:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63652:3:15",
            "parameters": {
              "id": 21168,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21161,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63664:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21182,
                  "src": "63656:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21160,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63656:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21163,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63676:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21182,
                  "src": "63668:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21162,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63668:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21165,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63685:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21182,
                  "src": "63680:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21164,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "63680:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21167,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63694:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21182,
                  "src": "63689:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21166,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "63689:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63655:42:15"
            },
            "returnParameters": {
              "id": 21169,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63712:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21205,
            "nodeType": "FunctionDefinition",
            "src": "63825:187:15",
            "nodes": [],
            "body": {
              "id": 21204,
              "nodeType": "Block",
              "src": "63903:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e742c737472696e6729",
                            "id": 21196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "63953:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9dd12eadc51edb79b050f95e9310706b305e500a52025b74b024df3cbcb53815",
                              "typeString": "literal_string \"log(address,address,uint,string)\""
                            },
                            "value": "log(address,address,uint,string)"
                          },
                          {
                            "id": 21197,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21184,
                            "src": "63989:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21198,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21186,
                            "src": "63993:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21199,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21188,
                            "src": "63997:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21200,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21190,
                            "src": "64001:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9dd12eadc51edb79b050f95e9310706b305e500a52025b74b024df3cbcb53815",
                              "typeString": "literal_string \"log(address,address,uint,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21194,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "63929:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21195,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "63933:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "63929:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "63929:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21193,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "63913:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "63913:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21203,
                  "nodeType": "ExpressionStatement",
                  "src": "63913:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "63834:3:15",
            "parameters": {
              "id": 21191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21184,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "63846:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21205,
                  "src": "63838:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21183,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63838:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21186,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "63858:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21205,
                  "src": "63850:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21185,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "63850:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21188,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "63867:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21205,
                  "src": "63862:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21187,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "63862:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21190,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "63885:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21205,
                  "src": "63871:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21189,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "63871:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "63837:51:15"
            },
            "returnParameters": {
              "id": 21192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "63903:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21228,
            "nodeType": "FunctionDefinition",
            "src": "64018:176:15",
            "nodes": [],
            "body": {
              "id": 21227,
              "nodeType": "Block",
              "src": "64087:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e742c626f6f6c29",
                            "id": 21219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64137:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c2f688eccc5824e4375e54ae0df7ae9f757b0758319e26fa7dcc6a4450e1d411",
                              "typeString": "literal_string \"log(address,address,uint,bool)\""
                            },
                            "value": "log(address,address,uint,bool)"
                          },
                          {
                            "id": 21220,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21207,
                            "src": "64171:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21221,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21209,
                            "src": "64175:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21222,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21211,
                            "src": "64179:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21223,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21213,
                            "src": "64183:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_c2f688eccc5824e4375e54ae0df7ae9f757b0758319e26fa7dcc6a4450e1d411",
                              "typeString": "literal_string \"log(address,address,uint,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21217,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64113:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64117:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64113:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21224,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64113:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21216,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "64097:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64097:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21226,
                  "nodeType": "ExpressionStatement",
                  "src": "64097:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64027:3:15",
            "parameters": {
              "id": 21214,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21207,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64039:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21228,
                  "src": "64031:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21206,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64031:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21209,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64051:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21228,
                  "src": "64043:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21208,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64043:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21211,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64060:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21228,
                  "src": "64055:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21210,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "64055:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21213,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64069:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21228,
                  "src": "64064:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21212,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64064:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64030:42:15"
            },
            "returnParameters": {
              "id": 21215,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64087:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21251,
            "nodeType": "FunctionDefinition",
            "src": "64200:182:15",
            "nodes": [],
            "body": {
              "id": 21250,
              "nodeType": "Block",
              "src": "64272:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c75696e742c6164647265737329",
                            "id": 21242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64322:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d6c65276d9b81968c5dbc7d91412af8260979b88b9036d81153645629a214556",
                              "typeString": "literal_string \"log(address,address,uint,address)\""
                            },
                            "value": "log(address,address,uint,address)"
                          },
                          {
                            "id": 21243,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21230,
                            "src": "64359:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21244,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21232,
                            "src": "64363:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21245,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21234,
                            "src": "64367:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 21246,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21236,
                            "src": "64371:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_d6c65276d9b81968c5dbc7d91412af8260979b88b9036d81153645629a214556",
                              "typeString": "literal_string \"log(address,address,uint,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21240,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64298:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64302:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64298:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64298:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21239,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "64282:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21248,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64282:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21249,
                  "nodeType": "ExpressionStatement",
                  "src": "64282:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64209:3:15",
            "parameters": {
              "id": 21237,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21230,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64221:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21251,
                  "src": "64213:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21229,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64213:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21232,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64233:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21251,
                  "src": "64225:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21231,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64225:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21234,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64242:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21251,
                  "src": "64237:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21233,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "64237:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21236,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64254:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21251,
                  "src": "64246:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21235,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64246:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64212:45:15"
            },
            "returnParameters": {
              "id": 21238,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64272:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21274,
            "nodeType": "FunctionDefinition",
            "src": "64388:187:15",
            "nodes": [],
            "body": {
              "id": 21273,
              "nodeType": "Block",
              "src": "64466:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c75696e7429",
                            "id": 21265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64516:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_04289300eaed00bb9d0d7894f7439ff06a8c4040945c0625e94f6f0c87fb11ba",
                              "typeString": "literal_string \"log(address,address,string,uint)\""
                            },
                            "value": "log(address,address,string,uint)"
                          },
                          {
                            "id": 21266,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21253,
                            "src": "64552:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21267,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21255,
                            "src": "64556:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21268,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21257,
                            "src": "64560:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21269,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21259,
                            "src": "64564:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_04289300eaed00bb9d0d7894f7439ff06a8c4040945c0625e94f6f0c87fb11ba",
                              "typeString": "literal_string \"log(address,address,string,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21263,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64492:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64496:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64492:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64492:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21262,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "64476:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64476:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21272,
                  "nodeType": "ExpressionStatement",
                  "src": "64476:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64397:3:15",
            "parameters": {
              "id": 21260,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21253,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64409:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21274,
                  "src": "64401:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21252,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64401:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21255,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64421:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21274,
                  "src": "64413:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21254,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64413:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21257,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64439:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21274,
                  "src": "64425:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21256,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "64425:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21259,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64448:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21274,
                  "src": "64443:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21258,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "64443:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64400:51:15"
            },
            "returnParameters": {
              "id": 21261,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64466:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21297,
            "nodeType": "FunctionDefinition",
            "src": "64581:198:15",
            "nodes": [],
            "body": {
              "id": 21296,
              "nodeType": "Block",
              "src": "64668:111:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c737472696e6729",
                            "id": 21288,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64718:36:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_21bdaf25c85279ffda21e4e2b9f685ff585c62a37c0ebe7ae25670fd06df3aa1",
                              "typeString": "literal_string \"log(address,address,string,string)\""
                            },
                            "value": "log(address,address,string,string)"
                          },
                          {
                            "id": 21289,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21276,
                            "src": "64756:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21290,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21278,
                            "src": "64760:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21291,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21280,
                            "src": "64764:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21292,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21282,
                            "src": "64768:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_21bdaf25c85279ffda21e4e2b9f685ff585c62a37c0ebe7ae25670fd06df3aa1",
                              "typeString": "literal_string \"log(address,address,string,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21286,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64694:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64698:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64694:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64694:77:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21285,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "64678:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64678:94:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21295,
                  "nodeType": "ExpressionStatement",
                  "src": "64678:94:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64590:3:15",
            "parameters": {
              "id": 21283,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21276,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64602:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21297,
                  "src": "64594:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21275,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64594:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21278,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64614:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21297,
                  "src": "64606:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64606:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21280,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64632:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21297,
                  "src": "64618:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21279,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "64618:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21282,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64650:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21297,
                  "src": "64636:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21281,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "64636:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64593:60:15"
            },
            "returnParameters": {
              "id": 21284,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64668:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21320,
            "nodeType": "FunctionDefinition",
            "src": "64785:187:15",
            "nodes": [],
            "body": {
              "id": 21319,
              "nodeType": "Block",
              "src": "64863:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c626f6f6c29",
                            "id": 21311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "64913:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6f1a594e70810560eaae5bbc82bc991f1120ac326ec142f6fb212682169447fd",
                              "typeString": "literal_string \"log(address,address,string,bool)\""
                            },
                            "value": "log(address,address,string,bool)"
                          },
                          {
                            "id": 21312,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21299,
                            "src": "64949:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21313,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21301,
                            "src": "64953:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21314,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21303,
                            "src": "64957:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21315,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21305,
                            "src": "64961:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6f1a594e70810560eaae5bbc82bc991f1120ac326ec142f6fb212682169447fd",
                              "typeString": "literal_string \"log(address,address,string,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21309,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "64889:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "64893:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "64889:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "64889:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21308,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "64873:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "64873:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21318,
                  "nodeType": "ExpressionStatement",
                  "src": "64873:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64794:3:15",
            "parameters": {
              "id": 21306,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21299,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64806:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21320,
                  "src": "64798:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21298,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64798:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21301,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "64818:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21320,
                  "src": "64810:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21300,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64810:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21303,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "64836:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21320,
                  "src": "64822:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21302,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "64822:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21305,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "64845:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21320,
                  "src": "64840:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21304,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "64840:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64797:51:15"
            },
            "returnParameters": {
              "id": 21307,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "64863:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21343,
            "nodeType": "FunctionDefinition",
            "src": "64978:193:15",
            "nodes": [],
            "body": {
              "id": 21342,
              "nodeType": "Block",
              "src": "65059:112:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c6164647265737329",
                            "id": 21334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65109:37:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_8f736d1685010d3a1ac02ed96109cdd5141fd92077c14203bc63442ad9b6a687",
                              "typeString": "literal_string \"log(address,address,string,address)\""
                            },
                            "value": "log(address,address,string,address)"
                          },
                          {
                            "id": 21335,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21322,
                            "src": "65148:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21336,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21324,
                            "src": "65152:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21337,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21326,
                            "src": "65156:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "id": 21338,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21328,
                            "src": "65160:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_8f736d1685010d3a1ac02ed96109cdd5141fd92077c14203bc63442ad9b6a687",
                              "typeString": "literal_string \"log(address,address,string,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21332,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65085:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65089:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65085:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65085:78:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21331,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "65069:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21340,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65069:95:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21341,
                  "nodeType": "ExpressionStatement",
                  "src": "65069:95:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "64987:3:15",
            "parameters": {
              "id": 21329,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21322,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "64999:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21343,
                  "src": "64991:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21321,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "64991:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21324,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65011:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21343,
                  "src": "65003:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21323,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65003:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21326,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65029:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21343,
                  "src": "65015:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21325,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "65015:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21328,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65041:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21343,
                  "src": "65033:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21327,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65033:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "64990:54:15"
            },
            "returnParameters": {
              "id": 21330,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65059:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21366,
            "nodeType": "FunctionDefinition",
            "src": "65177:176:15",
            "nodes": [],
            "body": {
              "id": 21365,
              "nodeType": "Block",
              "src": "65246:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c75696e7429",
                            "id": 21357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65296:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_95d65f110e4042ee84d162cfc6d17a44c2f2784259e33c97679d21e7a95a841e",
                              "typeString": "literal_string \"log(address,address,bool,uint)\""
                            },
                            "value": "log(address,address,bool,uint)"
                          },
                          {
                            "id": 21358,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21345,
                            "src": "65330:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21359,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21347,
                            "src": "65334:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21360,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21349,
                            "src": "65338:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21361,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21351,
                            "src": "65342:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_95d65f110e4042ee84d162cfc6d17a44c2f2784259e33c97679d21e7a95a841e",
                              "typeString": "literal_string \"log(address,address,bool,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21355,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65272:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65276:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65272:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21362,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65272:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21354,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "65256:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21363,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65256:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21364,
                  "nodeType": "ExpressionStatement",
                  "src": "65256:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65186:3:15",
            "parameters": {
              "id": 21352,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21345,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65198:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21366,
                  "src": "65190:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21344,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65190:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21347,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65210:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21366,
                  "src": "65202:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21346,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65202:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21349,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65219:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21366,
                  "src": "65214:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21348,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65214:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21351,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65228:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21366,
                  "src": "65223:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21350,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "65223:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65189:42:15"
            },
            "returnParameters": {
              "id": 21353,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65246:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21389,
            "nodeType": "FunctionDefinition",
            "src": "65359:187:15",
            "nodes": [],
            "body": {
              "id": 21388,
              "nodeType": "Block",
              "src": "65437:109:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c737472696e6729",
                            "id": 21380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65487:34:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_aa6540c8e9a40f69e022e01a14ab22c94aae4999f1d7a246236f464d7c933b88",
                              "typeString": "literal_string \"log(address,address,bool,string)\""
                            },
                            "value": "log(address,address,bool,string)"
                          },
                          {
                            "id": 21381,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21368,
                            "src": "65523:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21382,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21370,
                            "src": "65527:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21383,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21372,
                            "src": "65531:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21384,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21374,
                            "src": "65535:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_aa6540c8e9a40f69e022e01a14ab22c94aae4999f1d7a246236f464d7c933b88",
                              "typeString": "literal_string \"log(address,address,bool,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21378,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65463:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21379,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65467:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65463:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21385,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65463:75:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21377,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "65447:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65447:92:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21387,
                  "nodeType": "ExpressionStatement",
                  "src": "65447:92:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65368:3:15",
            "parameters": {
              "id": 21375,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21368,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65380:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21389,
                  "src": "65372:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21367,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65372:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21370,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65392:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21389,
                  "src": "65384:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21369,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65384:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21372,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65401:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21389,
                  "src": "65396:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21371,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65396:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21374,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65419:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21389,
                  "src": "65405:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21373,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "65405:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65371:51:15"
            },
            "returnParameters": {
              "id": 21376,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65437:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21412,
            "nodeType": "FunctionDefinition",
            "src": "65552:176:15",
            "nodes": [],
            "body": {
              "id": 21411,
              "nodeType": "Block",
              "src": "65621:107:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c626f6f6c29",
                            "id": 21403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65671:32:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2cd4134aedbc2cd722f2b9715dc3acb74b16b253590361dd98a4d6cb66119b65",
                              "typeString": "literal_string \"log(address,address,bool,bool)\""
                            },
                            "value": "log(address,address,bool,bool)"
                          },
                          {
                            "id": 21404,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21391,
                            "src": "65705:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21405,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21393,
                            "src": "65709:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21406,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21395,
                            "src": "65713:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21407,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21397,
                            "src": "65717:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_2cd4134aedbc2cd722f2b9715dc3acb74b16b253590361dd98a4d6cb66119b65",
                              "typeString": "literal_string \"log(address,address,bool,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21401,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65647:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65651:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65647:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65647:73:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21400,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "65631:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65631:90:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21410,
                  "nodeType": "ExpressionStatement",
                  "src": "65631:90:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65561:3:15",
            "parameters": {
              "id": 21398,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21391,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65573:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21412,
                  "src": "65565:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21390,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65565:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21393,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65585:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21412,
                  "src": "65577:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21392,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65577:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21395,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65594:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21412,
                  "src": "65589:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21394,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65589:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21397,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65603:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21412,
                  "src": "65598:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21396,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65598:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65564:42:15"
            },
            "returnParameters": {
              "id": 21399,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65621:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21435,
            "nodeType": "FunctionDefinition",
            "src": "65734:182:15",
            "nodes": [],
            "body": {
              "id": 21434,
              "nodeType": "Block",
              "src": "65806:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c6164647265737329",
                            "id": 21426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "65856:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9f1bc36e6c1a1385bfe3a230338e478ee5447b81d25d35962aff021b2c578b9c",
                              "typeString": "literal_string \"log(address,address,bool,address)\""
                            },
                            "value": "log(address,address,bool,address)"
                          },
                          {
                            "id": 21427,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21414,
                            "src": "65893:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21428,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21416,
                            "src": "65897:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21429,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21418,
                            "src": "65901:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "id": 21430,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21420,
                            "src": "65905:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_9f1bc36e6c1a1385bfe3a230338e478ee5447b81d25d35962aff021b2c578b9c",
                              "typeString": "literal_string \"log(address,address,bool,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21424,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "65832:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "65836:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "65832:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "65832:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21423,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "65816:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "65816:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21433,
                  "nodeType": "ExpressionStatement",
                  "src": "65816:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65743:3:15",
            "parameters": {
              "id": 21421,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21414,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65755:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21435,
                  "src": "65747:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21413,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65747:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21416,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65767:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21435,
                  "src": "65759:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21415,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65759:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21418,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65776:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21435,
                  "src": "65771:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21417,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "65771:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21420,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65788:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21435,
                  "src": "65780:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21419,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65780:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65746:45:15"
            },
            "returnParameters": {
              "id": 21422,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65806:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21458,
            "nodeType": "FunctionDefinition",
            "src": "65922:182:15",
            "nodes": [],
            "body": {
              "id": 21457,
              "nodeType": "Block",
              "src": "65994:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c75696e7429",
                            "id": 21449,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66044:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ed5eac8706392442fff9f76d5de4d50b9cc22387f3f19d447470771094406028",
                              "typeString": "literal_string \"log(address,address,address,uint)\""
                            },
                            "value": "log(address,address,address,uint)"
                          },
                          {
                            "id": 21450,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21437,
                            "src": "66081:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21451,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21439,
                            "src": "66085:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21452,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21441,
                            "src": "66089:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21453,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21443,
                            "src": "66093:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ed5eac8706392442fff9f76d5de4d50b9cc22387f3f19d447470771094406028",
                              "typeString": "literal_string \"log(address,address,address,uint)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 21447,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66020:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66024:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66020:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21454,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66020:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21446,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "66004:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66004:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21456,
                  "nodeType": "ExpressionStatement",
                  "src": "66004:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "65931:3:15",
            "parameters": {
              "id": 21444,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21437,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "65943:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21458,
                  "src": "65935:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21436,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65935:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21439,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "65955:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21458,
                  "src": "65947:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21438,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65947:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21441,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "65967:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21458,
                  "src": "65959:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21440,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "65959:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21443,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "65976:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21458,
                  "src": "65971:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21442,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "65971:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "65934:45:15"
            },
            "returnParameters": {
              "id": 21445,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "65994:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21481,
            "nodeType": "FunctionDefinition",
            "src": "66110:193:15",
            "nodes": [],
            "body": {
              "id": 21480,
              "nodeType": "Block",
              "src": "66191:112:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c737472696e6729",
                            "id": 21472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66241:37:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f808da2086fed855c3e15d9dbfed3b17a93ed9a59947aae6ab05b7e18576f025",
                              "typeString": "literal_string \"log(address,address,address,string)\""
                            },
                            "value": "log(address,address,address,string)"
                          },
                          {
                            "id": 21473,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21460,
                            "src": "66280:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21474,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21462,
                            "src": "66284:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21475,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21464,
                            "src": "66288:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21476,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21466,
                            "src": "66292:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f808da2086fed855c3e15d9dbfed3b17a93ed9a59947aae6ab05b7e18576f025",
                              "typeString": "literal_string \"log(address,address,address,string)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "expression": {
                            "id": 21470,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66217:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66221:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66217:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66217:78:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21469,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "66201:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21478,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66201:95:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21479,
                  "nodeType": "ExpressionStatement",
                  "src": "66201:95:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "66119:3:15",
            "parameters": {
              "id": 21467,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21460,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "66131:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21481,
                  "src": "66123:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21459,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66123:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21462,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "66143:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21481,
                  "src": "66135:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21461,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66135:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21464,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "66155:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21481,
                  "src": "66147:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21463,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66147:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21466,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66173:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21481,
                  "src": "66159:16:15",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 21465,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "66159:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "66122:54:15"
            },
            "returnParameters": {
              "id": 21468,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "66191:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21504,
            "nodeType": "FunctionDefinition",
            "src": "66309:182:15",
            "nodes": [],
            "body": {
              "id": 21503,
              "nodeType": "Block",
              "src": "66381:110:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c626f6f6c29",
                            "id": 21495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66431:35:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0e378994a4cd2663acfd73a7ad4e09d196e4fb7ee05b7cdf0708eb30271e2afb",
                              "typeString": "literal_string \"log(address,address,address,bool)\""
                            },
                            "value": "log(address,address,address,bool)"
                          },
                          {
                            "id": 21496,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21483,
                            "src": "66468:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21497,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21485,
                            "src": "66472:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21498,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21487,
                            "src": "66476:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21499,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21489,
                            "src": "66480:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_0e378994a4cd2663acfd73a7ad4e09d196e4fb7ee05b7cdf0708eb30271e2afb",
                              "typeString": "literal_string \"log(address,address,address,bool)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "expression": {
                            "id": 21493,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66407:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66411:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66407:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21500,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66407:76:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21492,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "66391:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21501,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66391:93:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21502,
                  "nodeType": "ExpressionStatement",
                  "src": "66391:93:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "66318:3:15",
            "parameters": {
              "id": 21490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21483,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "66330:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21504,
                  "src": "66322:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21482,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66322:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21485,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "66342:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21504,
                  "src": "66334:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21484,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66334:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21487,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "66354:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21504,
                  "src": "66346:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21486,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66346:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21489,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66363:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21504,
                  "src": "66358:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21488,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "66358:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "66321:45:15"
            },
            "returnParameters": {
              "id": 21491,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "66381:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 21527,
            "nodeType": "FunctionDefinition",
            "src": "66497:188:15",
            "nodes": [],
            "body": {
              "id": 21526,
              "nodeType": "Block",
              "src": "66572:113:15",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c6164647265737329",
                            "id": 21518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "66622:38:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_665bf1345e006aa321c0b6b71bed55ce0d6cdd812632f8c43114f62c55ffa0b5",
                              "typeString": "literal_string \"log(address,address,address,address)\""
                            },
                            "value": "log(address,address,address,address)"
                          },
                          {
                            "id": 21519,
                            "name": "p0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21506,
                            "src": "66662:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21520,
                            "name": "p1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21508,
                            "src": "66666:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21521,
                            "name": "p2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21510,
                            "src": "66670:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 21522,
                            "name": "p3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21512,
                            "src": "66674:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_665bf1345e006aa321c0b6b71bed55ce0d6cdd812632f8c43114f62c55ffa0b5",
                              "typeString": "literal_string \"log(address,address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 21516,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "66598:3:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 21517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "66602:19:15",
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "66598:23:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 21523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "66598:79:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 21515,
                      "name": "_sendLogPayload",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13488,
                      "src": "66582:15:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) view"
                      }
                    },
                    "id": 21524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "66582:96:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21525,
                  "nodeType": "ExpressionStatement",
                  "src": "66582:96:15"
                }
              ]
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "log",
            "nameLocation": "66506:3:15",
            "parameters": {
              "id": 21513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21506,
                  "mutability": "mutable",
                  "name": "p0",
                  "nameLocation": "66518:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21527,
                  "src": "66510:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21505,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66510:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21508,
                  "mutability": "mutable",
                  "name": "p1",
                  "nameLocation": "66530:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21527,
                  "src": "66522:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21507,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66522:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21510,
                  "mutability": "mutable",
                  "name": "p2",
                  "nameLocation": "66542:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21527,
                  "src": "66534:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21509,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66534:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21512,
                  "mutability": "mutable",
                  "name": "p3",
                  "nameLocation": "66554:2:15",
                  "nodeType": "VariableDeclaration",
                  "scope": 21527,
                  "src": "66546:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21511,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "66546:7:15",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "66509:48:15"
            },
            "returnParameters": {
              "id": 21514,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "66572:0:15"
            },
            "scope": 21528,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "console",
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          21528
        ],
        "name": "console",
        "nameLocation": "74:7:15",
        "scope": 21529,
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "license": "MIT"
  },
  "id": 15
}