{"abi":[],"bytecode":{"object":"0x602d6037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"194:8214:265:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8214:265;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x73000000000000000000000000000000000000000030146080604052600080fdfea164736f6c634300080f000a","sourceMap":"194:8214:265:-:0;;;;;;;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/tokamak-contracts/USDC/libraries/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"src/tokamak-contracts/USDC/libraries/Address.sol\":{\"keccak256\":\"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246\",\"dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/tokamak-contracts/USDC/libraries/Address.sol":"Address"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"src/tokamak-contracts/USDC/libraries/Address.sol":{"keccak256":"0x1d1dd930cd27cde1a42984254a481d8edb615a93bcea1a1d188568018751c92f","urls":["bzz-raw://f54df028fb62a3a9ffdedba1b9209391b985b229c7c37a28acf27d7b34478246","dweb:/ipfs/QmdkP1fEBq8mieprvTCMcFTihDfBNzEXwRRAE9teJ8x4nx"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","details":"Collection of functions related to the address type"},"ast":{"absolutePath":"src/tokamak-contracts/USDC/libraries/Address.sol","id":121160,"exportedSymbols":{"Address":[121159]},"nodeType":"SourceUnit","src":"101:8308:265","nodes":[{"id":120866,"nodeType":"PragmaDirective","src":"101:23:265","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":121159,"nodeType":"ContractDefinition","src":"194:8214:265","nodes":[{"id":120882,"nodeType":"FunctionDefinition","src":"1175:320:265","nodes":[],"body":{"id":120881,"nodeType":"Block","src":"1241:254:265","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120879,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":120875,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120870,"src":"1465:7:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":120876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"code","nodeType":"MemberAccess","src":"1465:12:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":120877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1465:19:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":120878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:265","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120874,"id":120880,"nodeType":"Return","src":"1458:30:265"}]},"documentation":{"id":120868,"nodeType":"StructuredDocumentation","src":"216:954:265","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1184:10:265","parameters":{"id":120871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120870,"mutability":"mutable","name":"account","nameLocation":"1203:7:265","nodeType":"VariableDeclaration","scope":120882,"src":"1195:15:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120869,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:265"},"returnParameters":{"id":120874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120873,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120882,"src":"1235:4:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120872,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:265"},"scope":121159,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":120916,"nodeType":"FunctionDefinition","src":"2419:313:265","nodes":[],"body":{"id":120915,"nodeType":"Block","src":"2490:242:265","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":120893,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2516:4:265","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$121159","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$121159","typeString":"library Address"}],"id":120892,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2508:7:265","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120891,"name":"address","nodeType":"ElementaryTypeName","src":"2508:7:265","typeDescriptions":{}}},"id":120894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2508:13:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":120895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2508:21:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":120896,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120887,"src":"2533:6:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2508:31:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":120898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2541:31:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":120890,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2500:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2500:73:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120900,"nodeType":"ExpressionStatement","src":"2500:73:265"},{"assignments":[120902,null],"declarations":[{"constant":false,"id":120902,"mutability":"mutable","name":"success","nameLocation":"2590:7:265","nodeType":"VariableDeclaration","scope":120915,"src":"2585:12:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120901,"name":"bool","nodeType":"ElementaryTypeName","src":"2585:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":120909,"initialValue":{"arguments":[{"hexValue":"","id":120907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2634:2:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":120903,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120885,"src":"2602:9:265","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":120904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2602:14:265","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":120906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":120905,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120887,"src":"2625:6:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2602:31:265","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":120908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2602:35:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2584:53:265"},{"expression":{"arguments":[{"id":120911,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120902,"src":"2655:7:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":120912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2664:60:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":120910,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2647:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2647:78:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120914,"nodeType":"ExpressionStatement","src":"2647:78:265"}]},"documentation":{"id":120883,"nodeType":"StructuredDocumentation","src":"1501:913:265","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions\n pattern]."},"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2428:9:265","parameters":{"id":120888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120885,"mutability":"mutable","name":"recipient","nameLocation":"2454:9:265","nodeType":"VariableDeclaration","scope":120916,"src":"2438:25:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":120884,"name":"address","nodeType":"ElementaryTypeName","src":"2438:15:265","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":120887,"mutability":"mutable","name":"amount","nameLocation":"2473:6:265","nodeType":"VariableDeclaration","scope":120916,"src":"2465:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120886,"name":"uint256","nodeType":"ElementaryTypeName","src":"2465:7:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2437:43:265"},"returnParameters":{"id":120889,"nodeType":"ParameterList","parameters":[],"src":"2490:0:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120933,"nodeType":"FunctionDefinition","src":"3481:173:265","nodes":[],"body":{"id":120932,"nodeType":"Block","src":"3570:84:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":120927,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120919,"src":"3600:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120928,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120921,"src":"3608:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":120929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3614:32:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":120926,"name":"functionCall","nodeType":"Identifier","overloadedDeclarations":[120933,120953],"referencedDeclaration":120953,"src":"3587:12:265","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":120930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3587:60:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":120925,"id":120931,"nodeType":"Return","src":"3580:67:265"}]},"documentation":{"id":120917,"nodeType":"StructuredDocumentation","src":"2738:738:265","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use\n https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3490:12:265","parameters":{"id":120922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120919,"mutability":"mutable","name":"target","nameLocation":"3511:6:265","nodeType":"VariableDeclaration","scope":120933,"src":"3503:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120918,"name":"address","nodeType":"ElementaryTypeName","src":"3503:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120921,"mutability":"mutable","name":"data","nameLocation":"3532:4:265","nodeType":"VariableDeclaration","scope":120933,"src":"3519:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120920,"name":"bytes","nodeType":"ElementaryTypeName","src":"3519:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3502:35:265"},"returnParameters":{"id":120925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120933,"src":"3556:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120923,"name":"bytes","nodeType":"ElementaryTypeName","src":"3556:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3555:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120953,"nodeType":"FunctionDefinition","src":"3876:243:265","nodes":[],"body":{"id":120952,"nodeType":"Block","src":"4043:76:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":120946,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120936,"src":"4082:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120947,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120938,"src":"4090:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":120948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4096:1:265","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":120949,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120940,"src":"4099:12:265","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":120945,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[120973,121023],"referencedDeclaration":121023,"src":"4060:21:265","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":120950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4060:52:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":120944,"id":120951,"nodeType":"Return","src":"4053:59:265"}]},"documentation":{"id":120934,"nodeType":"StructuredDocumentation","src":"3660:211:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3885:12:265","parameters":{"id":120941,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120936,"mutability":"mutable","name":"target","nameLocation":"3915:6:265","nodeType":"VariableDeclaration","scope":120953,"src":"3907:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120935,"name":"address","nodeType":"ElementaryTypeName","src":"3907:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120938,"mutability":"mutable","name":"data","nameLocation":"3944:4:265","nodeType":"VariableDeclaration","scope":120953,"src":"3931:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120937,"name":"bytes","nodeType":"ElementaryTypeName","src":"3931:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":120940,"mutability":"mutable","name":"errorMessage","nameLocation":"3972:12:265","nodeType":"VariableDeclaration","scope":120953,"src":"3958:26:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":120939,"name":"string","nodeType":"ElementaryTypeName","src":"3958:6:265","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3897:93:265"},"returnParameters":{"id":120944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120953,"src":"4025:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120942,"name":"bytes","nodeType":"ElementaryTypeName","src":"4025:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4024:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120973,"nodeType":"FunctionDefinition","src":"4481:224:265","nodes":[],"body":{"id":120972,"nodeType":"Block","src":"4594:111:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":120966,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120956,"src":"4633:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120967,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120958,"src":"4641:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120968,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120960,"src":"4647:5:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":120969,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4654:43:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":120965,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[120973,121023],"referencedDeclaration":121023,"src":"4611:21:265","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":120970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4611:87:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":120964,"id":120971,"nodeType":"Return","src":"4604:94:265"}]},"documentation":{"id":120954,"nodeType":"StructuredDocumentation","src":"4125:351:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4490:21:265","parameters":{"id":120961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120956,"mutability":"mutable","name":"target","nameLocation":"4520:6:265","nodeType":"VariableDeclaration","scope":120973,"src":"4512:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120955,"name":"address","nodeType":"ElementaryTypeName","src":"4512:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120958,"mutability":"mutable","name":"data","nameLocation":"4541:4:265","nodeType":"VariableDeclaration","scope":120973,"src":"4528:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120957,"name":"bytes","nodeType":"ElementaryTypeName","src":"4528:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":120960,"mutability":"mutable","name":"value","nameLocation":"4555:5:265","nodeType":"VariableDeclaration","scope":120973,"src":"4547:13:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120959,"name":"uint256","nodeType":"ElementaryTypeName","src":"4547:7:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4511:50:265"},"returnParameters":{"id":120964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120963,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120973,"src":"4580:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120962,"name":"bytes","nodeType":"ElementaryTypeName","src":"4580:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4579:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":121023,"nodeType":"FunctionDefinition","src":"4953:521:265","nodes":[],"body":{"id":121022,"nodeType":"Block","src":"5152:322:265","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":120990,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5178:4:265","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$121159","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$121159","typeString":"library Address"}],"id":120989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5170:7:265","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120988,"name":"address","nodeType":"ElementaryTypeName","src":"5170:7:265","typeDescriptions":{}}},"id":120991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5170:13:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":120992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"5170:21:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":120993,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120980,"src":"5195:5:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5170:30:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":120995,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5202:40:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":120987,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5162:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5162:81:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120997,"nodeType":"ExpressionStatement","src":"5162:81:265"},{"expression":{"arguments":[{"arguments":[{"id":121000,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120976,"src":"5272:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120999,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120882,"src":"5261:10:265","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":121001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5261:18:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":121002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5281:31:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":120998,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5253:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":121003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5253:60:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121004,"nodeType":"ExpressionStatement","src":"5253:60:265"},{"assignments":[121006,121008],"declarations":[{"constant":false,"id":121006,"mutability":"mutable","name":"success","nameLocation":"5330:7:265","nodeType":"VariableDeclaration","scope":121022,"src":"5325:12:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121005,"name":"bool","nodeType":"ElementaryTypeName","src":"5325:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":121008,"mutability":"mutable","name":"returndata","nameLocation":"5352:10:265","nodeType":"VariableDeclaration","scope":121022,"src":"5339:23:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121007,"name":"bytes","nodeType":"ElementaryTypeName","src":"5339:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":121015,"initialValue":{"arguments":[{"id":121013,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120978,"src":"5394:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":121009,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120976,"src":"5366:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":121010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"5366:11:265","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":121012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":121011,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120980,"src":"5386:5:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5366:27:265","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":121014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5366:33:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5324:75:265"},{"expression":{"arguments":[{"id":121017,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121006,"src":"5433:7:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":121018,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121008,"src":"5442:10:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":121019,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120982,"src":"5454:12:265","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":121016,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121158,"src":"5416:16:265","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":121020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5416:51:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":120986,"id":121021,"nodeType":"Return","src":"5409:58:265"}]},"documentation":{"id":120974,"nodeType":"StructuredDocumentation","src":"4711:237:265","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4962:21:265","parameters":{"id":120983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120976,"mutability":"mutable","name":"target","nameLocation":"5001:6:265","nodeType":"VariableDeclaration","scope":121023,"src":"4993:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120975,"name":"address","nodeType":"ElementaryTypeName","src":"4993:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120978,"mutability":"mutable","name":"data","nameLocation":"5030:4:265","nodeType":"VariableDeclaration","scope":121023,"src":"5017:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120977,"name":"bytes","nodeType":"ElementaryTypeName","src":"5017:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":120980,"mutability":"mutable","name":"value","nameLocation":"5052:5:265","nodeType":"VariableDeclaration","scope":121023,"src":"5044:13:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120979,"name":"uint256","nodeType":"ElementaryTypeName","src":"5044:7:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120982,"mutability":"mutable","name":"errorMessage","nameLocation":"5081:12:265","nodeType":"VariableDeclaration","scope":121023,"src":"5067:26:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":120981,"name":"string","nodeType":"ElementaryTypeName","src":"5067:6:265","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4983:116:265"},"returnParameters":{"id":120986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":121023,"src":"5134:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120984,"name":"bytes","nodeType":"ElementaryTypeName","src":"5134:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5133:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":121040,"nodeType":"FunctionDefinition","src":"5651:197:265","nodes":[],"body":{"id":121039,"nodeType":"Block","src":"5751:97:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":121034,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121026,"src":"5787:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121035,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121028,"src":"5795:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":121036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5801:39:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":121033,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[121040,121075],"referencedDeclaration":121075,"src":"5768:18:265","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":121037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5768:73:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":121032,"id":121038,"nodeType":"Return","src":"5761:80:265"}]},"documentation":{"id":121024,"nodeType":"StructuredDocumentation","src":"5480:166:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5660:18:265","parameters":{"id":121029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121026,"mutability":"mutable","name":"target","nameLocation":"5687:6:265","nodeType":"VariableDeclaration","scope":121040,"src":"5679:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121025,"name":"address","nodeType":"ElementaryTypeName","src":"5679:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121028,"mutability":"mutable","name":"data","nameLocation":"5708:4:265","nodeType":"VariableDeclaration","scope":121040,"src":"5695:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121027,"name":"bytes","nodeType":"ElementaryTypeName","src":"5695:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5678:35:265"},"returnParameters":{"id":121032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121031,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":121040,"src":"5737:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121030,"name":"bytes","nodeType":"ElementaryTypeName","src":"5737:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5736:14:265"},"scope":121159,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":121075,"nodeType":"FunctionDefinition","src":"6032:414:265","nodes":[],"body":{"id":121074,"nodeType":"Block","src":"6218:228:265","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":121054,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121043,"src":"6247:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":121053,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120882,"src":"6236:10:265","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":121055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6236:18:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374","id":121056,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6256:38:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""},"value":"Address: static call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9","typeString":"literal_string \"Address: static call to non-contract\""}],"id":121052,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6228:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":121057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6228:67:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121058,"nodeType":"ExpressionStatement","src":"6228:67:265"},{"assignments":[121060,121062],"declarations":[{"constant":false,"id":121060,"mutability":"mutable","name":"success","nameLocation":"6312:7:265","nodeType":"VariableDeclaration","scope":121074,"src":"6307:12:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121059,"name":"bool","nodeType":"ElementaryTypeName","src":"6307:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":121062,"mutability":"mutable","name":"returndata","nameLocation":"6334:10:265","nodeType":"VariableDeclaration","scope":121074,"src":"6321:23:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121061,"name":"bytes","nodeType":"ElementaryTypeName","src":"6321:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":121067,"initialValue":{"arguments":[{"id":121065,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121045,"src":"6366:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":121063,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121043,"src":"6348:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":121064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"staticcall","nodeType":"MemberAccess","src":"6348:17:265","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":121066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6348:23:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6306:65:265"},{"expression":{"arguments":[{"id":121069,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121060,"src":"6405:7:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":121070,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121062,"src":"6414:10:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":121071,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121047,"src":"6426:12:265","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":121068,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121158,"src":"6388:16:265","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":121072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6388:51:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":121051,"id":121073,"nodeType":"Return","src":"6381:58:265"}]},"documentation":{"id":121041,"nodeType":"StructuredDocumentation","src":"5854:173:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6041:18:265","parameters":{"id":121048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121043,"mutability":"mutable","name":"target","nameLocation":"6077:6:265","nodeType":"VariableDeclaration","scope":121075,"src":"6069:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121042,"name":"address","nodeType":"ElementaryTypeName","src":"6069:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121045,"mutability":"mutable","name":"data","nameLocation":"6106:4:265","nodeType":"VariableDeclaration","scope":121075,"src":"6093:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121044,"name":"bytes","nodeType":"ElementaryTypeName","src":"6093:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":121047,"mutability":"mutable","name":"errorMessage","nameLocation":"6134:12:265","nodeType":"VariableDeclaration","scope":121075,"src":"6120:26:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":121046,"name":"string","nodeType":"ElementaryTypeName","src":"6120:6:265","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6059:93:265"},"returnParameters":{"id":121051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":121075,"src":"6200:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121049,"name":"bytes","nodeType":"ElementaryTypeName","src":"6200:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6199:14:265"},"scope":121159,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":121092,"nodeType":"FunctionDefinition","src":"6625:198:265","nodes":[],"body":{"id":121091,"nodeType":"Block","src":"6722:101:265","nodes":[],"statements":[{"expression":{"arguments":[{"id":121086,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121078,"src":"6760:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121087,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121080,"src":"6768:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":121088,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6774:41:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":121085,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[121092,121127],"referencedDeclaration":121127,"src":"6739:20:265","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":121089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6739:77:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":121084,"id":121090,"nodeType":"Return","src":"6732:84:265"}]},"documentation":{"id":121076,"nodeType":"StructuredDocumentation","src":"6452:168:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6634:20:265","parameters":{"id":121081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121078,"mutability":"mutable","name":"target","nameLocation":"6663:6:265","nodeType":"VariableDeclaration","scope":121092,"src":"6655:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121077,"name":"address","nodeType":"ElementaryTypeName","src":"6655:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121080,"mutability":"mutable","name":"data","nameLocation":"6684:4:265","nodeType":"VariableDeclaration","scope":121092,"src":"6671:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121079,"name":"bytes","nodeType":"ElementaryTypeName","src":"6671:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6654:35:265"},"returnParameters":{"id":121084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121083,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":121092,"src":"6708:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121082,"name":"bytes","nodeType":"ElementaryTypeName","src":"6708:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6707:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":121127,"nodeType":"FunctionDefinition","src":"7009:407:265","nodes":[],"body":{"id":121126,"nodeType":"Block","src":"7184:232:265","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":121106,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121095,"src":"7213:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":121105,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120882,"src":"7202:10:265","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":121107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7202:18:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374","id":121108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7222:40:265","typeDescriptions":{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""},"value":"Address: delegate call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520","typeString":"literal_string \"Address: delegate call to non-contract\""}],"id":121104,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7194:7:265","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":121109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7194:69:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121110,"nodeType":"ExpressionStatement","src":"7194:69:265"},{"assignments":[121112,121114],"declarations":[{"constant":false,"id":121112,"mutability":"mutable","name":"success","nameLocation":"7280:7:265","nodeType":"VariableDeclaration","scope":121126,"src":"7275:12:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121111,"name":"bool","nodeType":"ElementaryTypeName","src":"7275:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":121114,"mutability":"mutable","name":"returndata","nameLocation":"7302:10:265","nodeType":"VariableDeclaration","scope":121126,"src":"7289:23:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121113,"name":"bytes","nodeType":"ElementaryTypeName","src":"7289:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":121119,"initialValue":{"arguments":[{"id":121117,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121097,"src":"7336:4:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":121115,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121095,"src":"7316:6:265","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":121116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"7316:19:265","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":121118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7316:25:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7274:67:265"},{"expression":{"arguments":[{"id":121121,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121112,"src":"7375:7:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":121122,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121114,"src":"7384:10:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":121123,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121099,"src":"7396:12:265","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":121120,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121158,"src":"7358:16:265","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory,string memory) pure returns (bytes memory)"}},"id":121124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7358:51:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":121103,"id":121125,"nodeType":"Return","src":"7351:58:265"}]},"documentation":{"id":121093,"nodeType":"StructuredDocumentation","src":"6829:175:265","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7018:20:265","parameters":{"id":121100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121095,"mutability":"mutable","name":"target","nameLocation":"7056:6:265","nodeType":"VariableDeclaration","scope":121127,"src":"7048:14:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121094,"name":"address","nodeType":"ElementaryTypeName","src":"7048:7:265","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121097,"mutability":"mutable","name":"data","nameLocation":"7085:4:265","nodeType":"VariableDeclaration","scope":121127,"src":"7072:17:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121096,"name":"bytes","nodeType":"ElementaryTypeName","src":"7072:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":121099,"mutability":"mutable","name":"errorMessage","nameLocation":"7113:12:265","nodeType":"VariableDeclaration","scope":121127,"src":"7099:26:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":121098,"name":"string","nodeType":"ElementaryTypeName","src":"7099:6:265","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7038:93:265"},"returnParameters":{"id":121103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121102,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":121127,"src":"7166:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121101,"name":"bytes","nodeType":"ElementaryTypeName","src":"7166:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7165:14:265"},"scope":121159,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":121158,"nodeType":"FunctionDefinition","src":"7636:770:265","nodes":[],"body":{"id":121157,"nodeType":"Block","src":"7824:582:265","nodes":[],"statements":[{"condition":{"id":121139,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121130,"src":"7838:7:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":121155,"nodeType":"Block","src":"7895:505:265","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":121146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":121143,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121132,"src":"7979:10:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":121144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7979:17:265","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":121145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7999:1:265","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7979:21:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":121153,"nodeType":"Block","src":"8337:53:265","statements":[{"expression":{"arguments":[{"id":121150,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121134,"src":"8362:12:265","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":121149,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"8355:6:265","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":121151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8355:20:265","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121152,"nodeType":"ExpressionStatement","src":"8355:20:265"}]},"id":121154,"nodeType":"IfStatement","src":"7975:415:265","trueBody":{"id":121148,"nodeType":"Block","src":"8002:329:265","statements":[{"AST":{"nodeType":"YulBlock","src":"8172:145:265","statements":[{"nodeType":"YulVariableDeclaration","src":"8194:40:265","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"8223:10:265"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8217:5:265"},"nodeType":"YulFunctionCall","src":"8217:17:265"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"8198:15:265","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8266:2:265","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"8270:10:265"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8262:3:265"},"nodeType":"YulFunctionCall","src":"8262:19:265"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"8283:15:265"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8255:6:265"},"nodeType":"YulFunctionCall","src":"8255:44:265"},"nodeType":"YulExpressionStatement","src":"8255:44:265"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"london","externalReferences":[{"declaration":121132,"isOffset":false,"isSlot":false,"src":"8223:10:265","valueSize":1},{"declaration":121132,"isOffset":false,"isSlot":false,"src":"8270:10:265","valueSize":1}],"id":121147,"nodeType":"InlineAssembly","src":"8163:154:265"}]}}]},"id":121156,"nodeType":"IfStatement","src":"7834:566:265","trueBody":{"id":121142,"nodeType":"Block","src":"7847:42:265","statements":[{"expression":{"id":121140,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121132,"src":"7868:10:265","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":121138,"id":121141,"nodeType":"Return","src":"7861:17:265"}]}}]},"documentation":{"id":121128,"nodeType":"StructuredDocumentation","src":"7422:209:265","text":" @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason using the provided one.\n _Available since v4.3._"},"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"7645:16:265","parameters":{"id":121135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121130,"mutability":"mutable","name":"success","nameLocation":"7676:7:265","nodeType":"VariableDeclaration","scope":121158,"src":"7671:12:265","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":121129,"name":"bool","nodeType":"ElementaryTypeName","src":"7671:4:265","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":121132,"mutability":"mutable","name":"returndata","nameLocation":"7706:10:265","nodeType":"VariableDeclaration","scope":121158,"src":"7693:23:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121131,"name":"bytes","nodeType":"ElementaryTypeName","src":"7693:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":121134,"mutability":"mutable","name":"errorMessage","nameLocation":"7740:12:265","nodeType":"VariableDeclaration","scope":121158,"src":"7726:26:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":121133,"name":"string","nodeType":"ElementaryTypeName","src":"7726:6:265","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7661:97:265"},"returnParameters":{"id":121138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":121158,"src":"7806:12:265","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121136,"name":"bytes","nodeType":"ElementaryTypeName","src":"7806:5:265","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7805:14:265"},"scope":121159,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":120867,"nodeType":"StructuredDocumentation","src":"126:67:265","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"linearizedBaseContracts":[121159],"name":"Address","nameLocation":"202:7:265","scope":121160,"usedErrors":[]}],"license":"MIT"},"id":265}