hardlydifficult-eth
Version:
A collection of reusable contracts and Javascript helpers for Ethereum.
1,084 lines • 93.8 kB
JSON
{
"contractName": "CloneFactoryMock",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "proxyAddress",
"type": "address"
}
],
"name": "CloneCreated",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
}
],
"name": "createClone",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"name": "createClone2",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
}
],
"name": "isAddressAvailable",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"name": "getClone2Address",
"outputs": [
{
"internalType": "address",
"name": "cloneAddress",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.10+commit.00c0fcaf\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"proxyAddress\",\"type\":\"address\"}],\"name\":\"CloneCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"createClone\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"createClone2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getClone2Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"cloneAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"}],\"name\":\"isAddressAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/test-artifacts/CloneFactoryMock.sol\":\"CloneFactoryMock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000000},\"remappings\":[]},\"sources\":{\"project:/contracts/proxies/Clone2Factory.sol\":{\"keccak256\":\"0x5eabefb0d942322d2fecf4f9060b53c6b54a22c741a3ec1e93ffcbbcedf6093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5075ba4f6f5a099b78d30145db7fe66e02357ec76e1d6efe1d85f0ebc595837d\",\"dweb:/ipfs/QmcZdGyizUDKN9t4t1FDvN7ic6G59FXiFiC5tHK7rKpst8\"]},\"project:/contracts/proxies/Clone2Probe.sol\":{\"keccak256\":\"0x2ed892746cadebdf1c4810f648ad3d65b15581a7078cdb1d9e1e9e6475bef238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd836231a996d826f9843bfacc0090cbc8c904ce4261637d574e9f657ded1e2e\",\"dweb:/ipfs/QmY94D7LXRPKstwpUF73K4HxEQbuz1gLgWG5uM6oSjTRUC\"]},\"project:/contracts/proxies/CloneFactory.sol\":{\"keccak256\":\"0x3f2547f3b4f8b1d9bb4ca67a07a2e701ef11c66fab48c6f9fda8aa617d8592db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc9e8341cca63da70ba239fd04bba128ceb70f3c12d7568a88aea9309d161528\",\"dweb:/ipfs/QmeNfUzw9giPwBaUxE723AZWoav5NbWohqW2x1mdxNvCyg\"]},\"project:/contracts/proxies/Create2Probe.sol\":{\"keccak256\":\"0xeb9f0df0022fb3af7afbda072058209adfc3778ed7be55f84c2fa3efbd1e6862\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2b08208b38130508ac6a2acf8ac9655ce525d372c87770270fdcb22e3b6b53a\",\"dweb:/ipfs/QmP8HuAF6FmgT6Vp57poQr1AVxCsCJXvPsjdJ8HfRmgBpb\"]},\"project:/contracts/test-artifacts/CloneFactoryMock.sol\":{\"keccak256\":\"0xbced1ccfb8dd3ccd3bd878f7088df808b730c491f19b893dd4937577d52a948f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0db5bdabb51365ff3cd78c65f5a45f24d4240ba7b7cb6b5fb16892fd355b2fb3\",\"dweb:/ipfs/QmW8sM6io4ZX6ez4EfX2bXbAs6ZNVgy9jPsR37S3qLZ3eE\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50610562806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063321660e41461005157806357894c1b1461008c5780639789e5bf146100bf578063dda1670f14610121575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610168565b005b61008a600480360360208110156100a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101e2565b6100f8600480360360408110156100d557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610254565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101546004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610285565b604080519115158252519081900360200190f35b600061019073ffffffffffffffffffffffffffffffffffffffff84168363ffffffff6102ae16565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a1505050565b60006102038273ffffffffffffffffffffffffffffffffffffffff16610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a15050565b600061027c73ffffffffffffffffffffffffffffffffffffffff84168363ffffffff61046416565b90505b92915050565b60006102a68273ffffffffffffffffffffffffffffffffffffffff16610501565b90505b919050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602882015260378120836101008301527fff0000000000000000000000000000000000000000000000000000000000000060408301523060601b6041830152610100820151605583015280607583015250605560408201209150813b6000811461036d576000925061037c565b6101008201516037836000f592505b505073ffffffffffffffffffffffffffffffffffffffff811661027f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f50524f58595f4445504c4f595f4641494c454400000000000000000000000000604482015290519081900360640190fd5b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09392505050565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606092831b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152603781207fff0000000000000000000000000000000000000000000000000000000000000082523090931b6001820152601581019190915260358101919091526055902090565b600073ffffffffffffffffffffffffffffffffffffffff8216610526575060006102a9565b503b159056fea26469706673582212209162628bb758337b20c90d9a7d6e24cf415ef99f2a327b1767eb3ff4a9d7ea4d64736f6c634300060a0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063321660e41461005157806357894c1b1461008c5780639789e5bf146100bf578063dda1670f14610121575b600080fd5b61008a6004803603604081101561006757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610168565b005b61008a600480360360208110156100a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166101e2565b6100f8600480360360408110156100d557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610254565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101546004803603602081101561013757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610285565b604080519115158252519081900360200190f35b600061019073ffffffffffffffffffffffffffffffffffffffff84168363ffffffff6102ae16565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a1505050565b60006102038273ffffffffffffffffffffffffffffffffffffffff16610400565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290519192507fbe2f3d28fdeb5839123d65fd47ec2f5915c715d2b527b9e229123706fdecfc85919081900360200190a15050565b600061027c73ffffffffffffffffffffffffffffffffffffffff84168363ffffffff61046416565b90505b92915050565b60006102a68273ffffffffffffffffffffffffffffffffffffffff16610501565b90505b919050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528360601b60148201527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602882015260378120836101008301527fff0000000000000000000000000000000000000000000000000000000000000060408301523060601b6041830152610100820151605583015280607583015250605560408201209150813b6000811461036d576000925061037c565b6101008201516037836000f592505b505073ffffffffffffffffffffffffffffffffffffffff811661027f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f50524f58595f4445504c4f595f4641494c454400000000000000000000000000604482015290519081900360640190fd5b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09392505050565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d730000000000000000000000008152606092831b60148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152603781207fff0000000000000000000000000000000000000000000000000000000000000082523090931b6001820152601581019190915260358101919091526055902090565b600073ffffffffffffffffffffffffffffffffffffffff8216610526575060006102a9565b503b159056fea26469706673582212209162628bb758337b20c90d9a7d6e24cf415ef99f2a327b1767eb3ff4a9d7ea4d64736f6c634300060a0033",
"immutableReferences": {},
"sourceMap": "211:832:24:-:0;;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "211:832:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:159;;;;;;;;;;;;;;;;-1:-1:-1;562:159:24;;;;;;;;;:::i;:::-;;423:135;;;;;;;;;;;;;;;;-1:-1:-1;423:135:24;;;;:::i;877:164::-;;;;;;;;;;;;;;;;-1:-1:-1;877:164:24;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;725:148;;;;;;;;;;;;;;;;-1:-1:-1;725:148:24;;;;:::i;:::-;;;;;;;;;;;;;;;;;;562:159;643:14;660:25;:19;;;680:4;660:25;:19;:25;:::i;:::-;696:20;;;;;;;;;;643:42;;-1:-1:-1;696:20:24;;;;;;;;;;562:159;;;:::o;423:135::-;485:14;502:20;:6;:18;;;:20::i;:::-;533;;;;;;;;;;485:37;;-1:-1:-1;533:20:24;;;;;;;;;;423:135;;:::o;877:164::-;970:20;1007:29;:23;;;1031:4;1007:29;:23;:29;:::i;:::-;1000:36;;877:164;;;;;:::o;725:148::-;811:4;832:36;:15;:34;;;:36::i;:::-;825:43;;725:148;;;;:::o;905:1710:18:-;991:20;1095:4;1089:11;1238:66;1229:7;1222:83;1347:6;1343:2;1339:15;1332:4;1323:7;1319:18;1312:43;1389:66;1382:4;1373:7;1369:18;1362:94;1732:4;1723:7;1713:24;1794:4;1786:5;1777:7;1773:19;1766:33;1875:66;1868:4;1859:7;1855:18;1848:94;1998:9;1994:2;1990:18;1983:4;1974:7;1970:18;1963:46;2076:5;2067:7;2063:19;2057:26;2050:4;2041:7;2037:18;2030:54;2132:16;2125:4;2116:7;2112:18;2105:44;;2203:4;2196;2187:7;2183:18;2173:35;2157:51;;2235:12;2223:25;2260:1;2255:161;;;;2457:1;2441:17;;2216:250;;2255:161;2400:5;2391:7;2387:19;2381:26;2375:4;2366:7;2363:1;2355:53;2339:69;;2216:250;-1:-1:-1;;2560:26:18;;;2552:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;450:452:20;517:14;613:4;607:11;639:66;632:5;625:81;746:6;742:2;738:15;731:4;724:5;720:16;713:41;786:66;779:4;772:5;768:16;761:92;887:4;880:5;877:1;870:22;860:32;586:312;-1:-1:-1;;;586:312:20:o;201:984:19:-;400:4;394:11;520:66;504:83;;625:2;621:15;;;614:4;601:18;;594:43;671:66;664:4;651:18;;644:94;817:4;798:24;;860:66;844:83;;996:9;988:18;;;982:3;969:17;;962:45;1049:4;1036:18;;1029:32;;;;1103:4;1090:18;;1083:44;;;;1170:4;1151:24;;;371:810::o;202:309:21:-;290:4;307:29;;;304:65;;-1:-1:-1;357:5:21;350:12;;304:65;-1:-1:-1;450:28:21;497:9;;202:309::o",
"source": "// SPDX-License-Identifier: MIT\npragma solidity ^0.6.0;\n\nimport '../proxies/CloneFactory.sol';\nimport '../proxies/Clone2Factory.sol';\nimport '../proxies/Clone2Probe.sol';\nimport '../proxies/Create2Probe.sol';\n\n\ncontract CloneFactoryMock\n{\n using CloneFactory for address;\n using Clone2Factory for address;\n using Clone2Probe for address;\n using Create2Probe for address;\n\n event CloneCreated(address proxyAddress);\n\n function createClone(\n address target\n ) external\n {\n address result = target.createClone();\n emit CloneCreated(result);\n }\n\n function createClone2(\n address target,\n bytes32 salt\n ) external\n {\n address result = target.createClone2(salt);\n emit CloneCreated(result);\n }\n\n function isAddressAvailable(\n address contractAddress\n ) public view\n returns (bool)\n {\n return contractAddress.isAddressAvailable();\n }\n\n function getClone2Address(\n address target,\n bytes32 salt\n ) public view\n returns (address cloneAddress)\n {\n return target.getClone2Address(salt);\n }\n}\n",
"sourcePath": "/home/circleci/repo/contracts/test-artifacts/CloneFactoryMock.sol",
"ast": {
"absolutePath": "project:/contracts/test-artifacts/CloneFactoryMock.sol",
"exportedSymbols": {
"CloneFactoryMock": [
4022
]
},
"id": 4023,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 3939,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "32:23:24"
},
{
"absolutePath": "project:/contracts/proxies/CloneFactory.sol",
"file": "../proxies/CloneFactory.sol",
"id": 3940,
"nodeType": "ImportDirective",
"scope": 4023,
"sourceUnit": 3783,
"src": "57:37:24",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/proxies/Clone2Factory.sol",
"file": "../proxies/Clone2Factory.sol",
"id": 3941,
"nodeType": "ImportDirective",
"scope": 4023,
"sourceUnit": 3756,
"src": "95:38:24",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/proxies/Clone2Probe.sol",
"file": "../proxies/Clone2Probe.sol",
"id": 3942,
"nodeType": "ImportDirective",
"scope": 4023,
"sourceUnit": 3770,
"src": "134:36:24",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/proxies/Create2Probe.sol",
"file": "../proxies/Create2Probe.sol",
"id": 3943,
"nodeType": "ImportDirective",
"scope": 4023,
"sourceUnit": 3812,
"src": "171:37:24",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 4022,
"linearizedBaseContracts": [
4022
],
"name": "CloneFactoryMock",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 3946,
"libraryName": {
"contractScope": null,
"id": 3944,
"name": "CloneFactory",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3782,
"src": "247:12:24",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CloneFactory_$3782",
"typeString": "library CloneFactory"
}
},
"nodeType": "UsingForDirective",
"src": "241:31:24",
"typeName": {
"id": 3945,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "264:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 3949,
"libraryName": {
"contractScope": null,
"id": 3947,
"name": "Clone2Factory",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3755,
"src": "281:13:24",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Clone2Factory_$3755",
"typeString": "library Clone2Factory"
}
},
"nodeType": "UsingForDirective",
"src": "275:32:24",
"typeName": {
"id": 3948,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "299:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 3952,
"libraryName": {
"contractScope": null,
"id": 3950,
"name": "Clone2Probe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3769,
"src": "316:11:24",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Clone2Probe_$3769",
"typeString": "library Clone2Probe"
}
},
"nodeType": "UsingForDirective",
"src": "310:30:24",
"typeName": {
"id": 3951,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "332:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"id": 3955,
"libraryName": {
"contractScope": null,
"id": 3953,
"name": "Create2Probe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3811,
"src": "349:12:24",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Create2Probe_$3811",
"typeString": "library Create2Probe"
}
},
"nodeType": "UsingForDirective",
"src": "343:31:24",
"typeName": {
"id": 3954,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "366:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"anonymous": false,
"documentation": null,
"id": 3959,
"name": "CloneCreated",
"nodeType": "EventDefinition",
"parameters": {
"id": 3958,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3957,
"indexed": false,
"mutability": "mutable",
"name": "proxyAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3959,
"src": "397:20:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 3956,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "397:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "396:22:24"
},
"src": "378:41:24"
},
{
"body": {
"id": 3974,
"nodeType": "Block",
"src": "479:79:24",
"statements": [
{
"assignments": [
3965
],
"declarations": [
{
"constant": false,
"id": 3965,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3974,
"src": "485:14:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 3964,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "485:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 3969,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 3966,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3961,
"src": "502:6:24",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 3967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "createClone",
"nodeType": "MemberAccess",
"referencedDeclaration": 3781,
"src": "502:18:24",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$bound_to$_t_address_$",
"typeString": "function (address) returns (address)"
}
},
"id": 3968,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "502:20:24",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "485:37:24"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 3971,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3965,
"src": "546:6:24",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 3970,
"name": "CloneCreated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3959,
"src": "533:12:24",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 3972,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "533:20:24",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 3973,
"nodeType": "EmitStatement",
"src": "528:25:24"
}
]
},
"documentation": null,
"functionSelector": "57894c1b",
"id": 3975,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "createClone",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 3962,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3961,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3975,
"src": "449:14:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 3960,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "449:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "443:24:24"
},
"returnParameters": {
"id": 3963,
"nodeType": "ParameterList",
"parameters": [],
"src": "479:0:24"
},
"scope": 4022,
"src": "423:135:24",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 3993,
"nodeType": "Block",
"src": "637:84:24",
"statements": [
{
"assignments": [
3983
],
"declarations": [
{
"constant": false,
"id": 3983,
"mutability": "mutable",
"name": "result",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3993,
"src": "643:14:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 3982,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "643:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 3988,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 3986,
"name": "salt",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3979,
"src": "680:4:24",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 3984,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3977,
"src": "660:6:24",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 3985,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "createClone2",
"nodeType": "MemberAccess",
"referencedDeclaration": 3754,
"src": "660:19:24",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$bound_to$_t_address_$",
"typeString": "function (address,bytes32) returns (address)"
}
},
"id": 3987,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "660:25:24",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "643:42:24"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 3990,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3983,
"src": "709:6:24",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 3989,
"name": "CloneCreated",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3959,
"src": "696:12:24",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
"typeString": "function (address)"
}
},
"id": 3991,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "696:20:24",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 3992,
"nodeType": "EmitStatement",
"src": "691:25:24"
}
]
},
"documentation": null,
"functionSelector": "321660e4",
"id": 3994,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "createClone2",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 3980,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3977,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3994,
"src": "589:14:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 3976,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "589:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 3979,
"mutability": "mutable",
"name": "salt",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 3994,
"src": "609:12:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 3978,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "609:7:24",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "583:42:24"
},
"returnParameters": {
"id": 3981,
"nodeType": "ParameterList",
"parameters": [],
"src": "637:0:24"
},
"scope": 4022,
"src": "562:159:24",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 4005,
"nodeType": "Block",
"src": "819:54:24",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"id": 4001,
"name": "contractAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3996,
"src": "832:15:24",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4002,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isAddressAvailable",
"nodeType": "MemberAccess",
"referencedDeclaration": 3810,
"src": "832:34:24",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
"typeString": "function (address) view returns (bool)"
}
},
"id": 4003,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "832:36:24",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 4000,
"id": 4004,
"nodeType": "Return",
"src": "825:43:24"
}
]
},
"documentation": null,
"functionSelector": "dda1670f",
"id": 4006,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "isAddressAvailable",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 3997,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3996,
"mutability": "mutable",
"name": "contractAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4006,
"src": "758:23:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 3995,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "758:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "752:33:24"
},
"returnParameters": {
"id": 4000,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 3999,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4006,
"src": "811:4:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 3998,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "811:4:24",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "810:6:24"
},
"scope": 4022,
"src": "725:148:24",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 4020,
"nodeType": "Block",
"src": "994:47:24",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 4017,
"name": "salt",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4010,
"src": "1031:4:24",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 4015,
"name": "target",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4008,
"src": "1007:6:24",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 4016,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "getClone2Address",
"nodeType": "MemberAccess",
"referencedDeclaration": 3768,
"src": "1007:23:24",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_address_$bound_to$_t_address_$",
"typeString": "function (address,bytes32) view returns (address)"
}
},
"id": 4018,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1007:29:24",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 4014,
"id": 4019,
"nodeType": "Return",
"src": "1000:36:24"
}
]
},
"documentation": null,
"functionSelector": "9789e5bf",
"id": 4021,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getClone2Address",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 4011,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 4008,
"mutability": "mutable",
"name": "target",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4021,
"src": "908:14:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 4007,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "908:7:24",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 4010,
"mutability": "mutable",
"name": "salt",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 4021,
"src": "928:12:24",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 4009,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src"