creation_sourcecode: {{
    "language": "Solidity",
    "sources": {
      "OracleRouter.sol": {
        "content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.0;\n\n// --------------------------------------------------------------------------------\n// --------------------------------------------------------------------------------\n// GENERATED CODE - do not edit manually!!\n// --------------------------------------------------------------------------------\n// --------------------------------------------------------------------------------\n\ncontract OracleRouter {\n    error UnknownSelector(bytes4 sel);\n\n    address private constant _CORE_MODULE = 0x874573f87a53e6D9D6F11eE8Bb994E247dB55509;\n    address private constant _NODE_MODULE = 0xD90159162A87cfeb2C56c98Ba9c7e6AA50cb4456;\n\n    fallback() external payable {\n        // Lookup table: Function selector => implementation contract\n        bytes4 sig4 = msg.sig;\n        address implementation;\n\n        assembly {\n            let sig32 := shr(224, sig4)\n\n            function findImplementation(sig) -> result {\n                if lt(sig,0x79ba5097) {\n                    switch sig\n                    case 0x1627540c { result := _CORE_MODULE } // CoreModule.nominateNewOwner()\n                    case 0x2a952b2d { result := _NODE_MODULE } // NodeModule.process()\n                    case 0x3659cfe6 { result := _CORE_MODULE } // CoreModule.upgradeTo()\n                    case 0x50c946fe { result := _NODE_MODULE } // NodeModule.getNode()\n                    case 0x53a47bb7 { result := _CORE_MODULE } // CoreModule.nominatedOwner()\n                    case 0x625ca21c { result := _NODE_MODULE } // NodeModule.getNodeId()\n                    case 0x718fe928 { result := _CORE_MODULE } // CoreModule.renounceNomination()\n                    leave\n                }\n                switch sig\n                case 0x79ba5097 { result := _CORE_MODULE } // CoreModule.acceptOwnership()\n                case 0x8da5cb5b { result := _CORE_MODULE } // CoreModule.owner()\n                case 0xaaf10f42 { result := _CORE_MODULE } // CoreModule.getImplementation()\n                case 0xc7f62cda { result := _CORE_MODULE } // CoreModule.simulateUpgradeTo()\n                case 0xdaa250be { result := _NODE_MODULE } // NodeModule.processWithRuntime()\n                case 0xdeba1b98 { result := _NODE_MODULE } // NodeModule.registerNode()\n                leave\n            }\n\n            implementation := findImplementation(sig32)\n        }\n\n        if (implementation == address(0)) {\n            revert UnknownSelector(sig4);\n        }\n\n        // Delegatecall to the implementation contract\n        assembly {\n            calldatacopy(0, 0, calldatasize())\n\n            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n            returndatacopy(0, 0, returndatasize())\n\n            switch result\n            case 0 {\n                revert(0, returndatasize())\n            }\n            default {\n                return(0, returndatasize())\n            }\n        }\n    }\n}\n"
      }
    },
    "settings": {
      "outputSelection": {
        "*": {
          "*": [
            "evm.bytecode",
            "evm.deployedBytecode",
            "devdoc",
            "userdoc",
            "metadata",
            "abi"
          ]
        }
      }
    }
  }}