{
  "address": "0x2A6C106ae13B558BB9E2Ec64Bd2f1f7BEFF3A5E0",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousImplementation",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "ProxyImplementationUpdated",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "id",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        }
      ],
      "name": "upgradeTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "upgradeToAndCall",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sponsor",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "feeToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "oneBalanceChainId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nativeToFeeTokenXRateNumerator",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "nativeToFeeTokenXRateDenominator",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "correlationId",
          "type": "bytes32"
        }
      ],
      "name": "LogUseGelato1Balance",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_taskId",
          "type": "bytes32"
        }
      ],
      "name": "cancelTask",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_execAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_execDataOrSelector",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "enum LibDataTypes.Module[]",
              "name": "modules",
              "type": "uint8[]"
            },
            {
              "internalType": "bytes[]",
              "name": "args",
              "type": "bytes[]"
            }
          ],
          "internalType": "struct LibDataTypes.ModuleData",
          "name": "_moduleData",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "_feeToken",
          "type": "address"
        }
      ],
      "name": "createTask",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "taskId",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_taskCreator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_execAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_execData",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "enum LibDataTypes.Module[]",
              "name": "modules",
              "type": "uint8[]"
            },
            {
              "internalType": "bytes[]",
              "name": "args",
              "type": "bytes[]"
            }
          ],
          "internalType": "struct LibDataTypes.ModuleData",
          "name": "_moduleData",
          "type": "tuple"
        },
        {
          "internalType": "uint256",
          "name": "_txFee",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_feeToken",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_useTaskTreasuryFunds",
          "type": "bool"
        },
        {
          "internalType": "bool",
          "name": "_revertOnFailure",
          "type": "bool"
        }
      ],
      "name": "exec",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_taskCreator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_execAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_execData",
          "type": "bytes"
        },
        {
          "components": [
            {
              "internalType": "enum LibDataTypes.Module[]",
              "name": "modules",
              "type": "uint8[]"
            },
            {
              "internalType": "bytes[]",
              "name": "args",
              "type": "bytes[]"
            }
          ],
          "internalType": "struct LibDataTypes.ModuleData",
          "name": "_moduleData",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "sponsor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "feeToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "oneBalanceChainId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nativeToFeeTokenXRateNumerator",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nativeToFeeTokenXRateDenominator",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "correlationId",
              "type": "bytes32"
            }
          ],
          "internalType": "struct IGelato1Balance.Gelato1BalanceParam",
          "name": "_oneBalanceParam",
          "type": "tuple"
        },
        {
          "internalType": "bool",
          "name": "_revertOnFailure",
          "type": "bool"
        }
      ],
      "name": "exec1Balance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "execAddresses",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gelato",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFeeDetails",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "taskCreator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "execAddress",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "execSelector",
          "type": "bytes4"
        },
        {
          "components": [
            {
              "internalType": "enum LibDataTypes.Module[]",
              "name": "modules",
              "type": "uint8[]"
            },
            {
              "internalType": "bytes[]",
              "name": "args",
              "type": "bytes[]"
            }
          ],
          "internalType": "struct LibDataTypes.ModuleData",
          "name": "moduleData",
          "type": "tuple"
        },
        {
          "internalType": "address",
          "name": "feeToken",
          "type": "address"
        }
      ],
      "name": "getTaskId",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "taskId",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "taskCreator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "execAddress",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "execSelector",
          "type": "bytes4"
        },
        {
          "internalType": "bool",
          "name": "useTaskTreasuryFunds",
          "type": "bool"
        },
        {
          "internalType": "address",
          "name": "feeToken",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "resolverHash",
          "type": "bytes32"
        }
      ],
      "name": "getTaskId",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "taskId",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_taskCreator",
          "type": "address"
        }
      ],
      "name": "getTaskIdsByUser",
      "outputs": [
        {
          "internalType": "bytes32[]",
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "nonce1Balance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum LibDataTypes.Module[]",
          "name": "_modules",
          "type": "uint8[]"
        },
        {
          "internalType": "address[]",
          "name": "_moduleAddresses",
          "type": "address[]"
        }
      ],
      "name": "setModule",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "taskCreator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum LibDataTypes.Module",
          "name": "",
          "type": "uint8"
        }
      ],
      "name": "taskModuleAddresses",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "taskTreasury",
      "outputs": [
        {
          "internalType": "contract ITaskTreasuryUpgradable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "timedTask",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "nextExec",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "interval",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "implementationAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "ownerAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "constructor"
    }
  ],
  "transactionHash": "0x195a458f53a814c69ab14946297b35841374e531959736df54fee6271b0345ad",
  "receipt": {
    "to": null,
    "from": "0xF1108379d71ff2A785899F4C36010f841F1Fea04",
    "contractAddress": "0x2A6C106ae13B558BB9E2Ec64Bd2f1f7BEFF3A5E0",
    "transactionIndex": 49,
    "gasUsed": "610932",
    "logsBloom": "0x00000000000000000000000000000000000800000000000000800000400000000000000000000800000400000000000000000000000000000000000000000000000000000020000000000000000000000001000000000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000040000000000000000000000000002000000000200000000000000000000000000000000000000000000000000000000000008000008000000000000000000000000000020000000000000200000000400000000000000000000000000000000000000000000",
    "blockHash": "0x3a5b0caafffacdbe0c83d1797b62b46956619e4b71111e63ceb3bbf83433b7da",
    "transactionHash": "0x195a458f53a814c69ab14946297b35841374e531959736df54fee6271b0345ad",
    "logs": [
      {
        "transactionIndex": 49,
        "blockNumber": 26622502,
        "transactionHash": "0x195a458f53a814c69ab14946297b35841374e531959736df54fee6271b0345ad",
        "address": "0x2A6C106ae13B558BB9E2Ec64Bd2f1f7BEFF3A5E0",
        "topics": [
          "0x5570d70a002632a7b0b3c9304cc89efb62d8da9eca0dbd7752c83b7379068296",
          "0x0000000000000000000000000000000000000000000000000000000000000000",
          "0x0000000000000000000000005d9185b1370613add04aa92d269d16c14b15ef76"
        ],
        "data": "0x",
        "logIndex": 107,
        "blockHash": "0x3a5b0caafffacdbe0c83d1797b62b46956619e4b71111e63ceb3bbf83433b7da"
      },
      {
        "transactionIndex": 49,
        "blockNumber": 26622502,
        "transactionHash": "0x195a458f53a814c69ab14946297b35841374e531959736df54fee6271b0345ad",
        "address": "0x2A6C106ae13B558BB9E2Ec64Bd2f1f7BEFF3A5E0",
        "topics": [
          "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0",
          "0x0000000000000000000000000000000000000000000000000000000000000000",
          "0x000000000000000000000000f1108379d71ff2a785899f4c36010f841f1fea04"
        ],
        "data": "0x",
        "logIndex": 108,
        "blockHash": "0x3a5b0caafffacdbe0c83d1797b62b46956619e4b71111e63ceb3bbf83433b7da"
      }
    ],
    "blockNumber": 26622502,
    "cumulativeGasUsed": "4282406",
    "status": 1,
    "byzantium": true
  },
  "args": [
    "0x5d9185B1370613Add04aA92d269D16c14B15Ef76",
    "0xF1108379d71ff2A785899F4C36010f841F1Fea04",
    "0x"
  ],
  "numDeployments": 1,
  "solcInputHash": "2db89642daf7ebd20cbbef9f4540b20d",
  "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementationAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"ownerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"ProxyImplementationUpdated\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"id\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"upgradeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Proxy implementing EIP173 for ownership management\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"solc_0.7/proxy/EIP173Proxy.sol\":\"EIP173Proxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"solc_0.7/proxy/EIP173Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.7.0;\\n\\nimport \\\"./Proxy.sol\\\";\\n\\ninterface ERC165 {\\n    function supportsInterface(bytes4 id) external view returns (bool);\\n}\\n\\n///@notice Proxy implementing EIP173 for ownership management\\ncontract EIP173Proxy is Proxy {\\n    // ////////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////\\n\\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n    // /////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////////////\\n\\n    constructor(\\n        address implementationAddress,\\n        address ownerAddress,\\n        bytes memory data\\n    ) payable {\\n        _setImplementation(implementationAddress, data);\\n        _setOwner(ownerAddress);\\n    }\\n\\n    // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////\\n\\n    function owner() external view returns (address) {\\n        return _owner();\\n    }\\n\\n    function supportsInterface(bytes4 id) external view returns (bool) {\\n        if (id == 0x01ffc9a7 || id == 0x7f5828d0) {\\n            return true;\\n        }\\n        if (id == 0xFFFFFFFF) {\\n            return false;\\n        }\\n\\n        ERC165 implementation;\\n        // solhint-disable-next-line security/no-inline-assembly\\n        assembly {\\n            implementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n        }\\n\\n        // Technically this is not standard compliant as ERC-165 require 30,000 gas which that call cannot ensure\\n        // because it is itself inside `supportsInterface` that might only get 30,000 gas.\\n        // In practise this is unlikely to be an issue.\\n        try implementation.supportsInterface(id) returns (bool support) {\\n            return support;\\n        } catch {\\n            return false;\\n        }\\n    }\\n\\n    function transferOwnership(address newOwner) external onlyOwner {\\n        _setOwner(newOwner);\\n    }\\n\\n    function upgradeTo(address newImplementation) external onlyOwner {\\n        _setImplementation(newImplementation, \\\"\\\");\\n    }\\n\\n    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable onlyOwner {\\n        _setImplementation(newImplementation, data);\\n    }\\n\\n    // /////////////////////// MODIFIERS ////////////////////////////////////////////////////////////////////////\\n\\n    modifier onlyOwner() {\\n        require(msg.sender == _owner(), \\\"NOT_AUTHORIZED\\\");\\n        _;\\n    }\\n\\n    // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////\\n\\n    function _owner() internal view returns (address adminAddress) {\\n        // solhint-disable-next-line security/no-inline-assembly\\n        assembly {\\n            adminAddress := sload(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103)\\n        }\\n    }\\n\\n    function _setOwner(address newOwner) internal {\\n        address previousOwner = _owner();\\n        // solhint-disable-next-line security/no-inline-assembly\\n        assembly {\\n            sstore(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103, newOwner)\\n        }\\n        emit OwnershipTransferred(previousOwner, newOwner);\\n    }\\n}\\n\",\"keccak256\":\"0x7f9bbb686cd29ade05acf0cec1bfded16f0ad8d7e3fcb9cf35cc8b04efdda744\",\"license\":\"MIT\"},\"solc_0.7/proxy/Proxy.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.7.0;\\n\\n// EIP-1967\\nabstract contract Proxy {\\n    // /////////////////////// EVENTS ///////////////////////////////////////////////////////////////////////////\\n\\n    event ProxyImplementationUpdated(address indexed previousImplementation, address indexed newImplementation);\\n\\n    // ///////////////////// EXTERNAL ///////////////////////////////////////////////////////////////////////////\\n\\n    receive() external payable virtual {\\n        revert(\\\"ETHER_REJECTED\\\"); // explicit reject by default\\n    }\\n\\n    fallback() external payable {\\n        _fallback();\\n    }\\n\\n    // ///////////////////////// INTERNAL //////////////////////////////////////////////////////////////////////\\n\\n    function _fallback() internal {\\n        // solhint-disable-next-line security/no-inline-assembly\\n        assembly {\\n            let implementationAddress := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n            calldatacopy(0x0, 0x0, calldatasize())\\n            let success := delegatecall(gas(), implementationAddress, 0x0, calldatasize(), 0, 0)\\n            let retSz := returndatasize()\\n            returndatacopy(0, 0, retSz)\\n            switch success\\n                case 0 {\\n                    revert(0, retSz)\\n                }\\n                default {\\n                    return(0, retSz)\\n                }\\n        }\\n    }\\n\\n    function _setImplementation(address newImplementation, bytes memory data) internal {\\n        address previousImplementation;\\n        // solhint-disable-next-line security/no-inline-assembly\\n        assembly {\\n            previousImplementation := sload(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc)\\n        }\\n\\n        // solhint-disable-next-line security/no-inline-assembly\\n        assembly {\\n            sstore(0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc, newImplementation)\\n        }\\n\\n        emit ProxyImplementationUpdated(previousImplementation, newImplementation);\\n\\n        if (data.length > 0) {\\n            (bool success, ) = newImplementation.delegatecall(data);\\n            if (!success) {\\n                assembly {\\n                    // This assembly ensure the revert contains the exact string data\\n                    let returnDataSize := returndatasize()\\n                    returndatacopy(0, 0, returnDataSize)\\n                    revert(0, returnDataSize)\\n                }\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xfa071ffed5c967384ac4787576322a46a4863d89bf39cd6fde58d4780b42e0ed\",\"license\":\"MIT\"}},\"version\":1}",
  "bytecode": "[encoded data, 6108 characters]",
  "deployedBytecode": "[encoded data, 4684 characters]",
  "implementation": "0x5d9185B1370613Add04aA92d269D16c14B15Ef76",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "notice": "Proxy implementing EIP173 for ownership management",
    "version": 1
  },
  "storageLayout": {
    "storage": [],
    "types": null
  }
}
