Just have to flip the switch. Can't be that hard, right?
Things that might help:
Understanding how CALLDATA is encoded.
Contract
// SPDX-License-Identifier: MITpragmasolidity ^0.8.0;contract Switch {boolpublic switchOn; // switch is offbytes4public offSelector =bytes4(keccak256("turnSwitchOff()"));modifieronlyThis() {require(msg.sender ==address(this),"Only the contract can call this"); _; }modifieronlyOff() {// we use a complex data type to put in memorybytes32[1] memory selector;// check that the calldata at position 68 (location of _data)assembly {calldatacopy(selector,68,4) // grab function selector from calldata }require( selector[0] == offSelector,"Can only call the turnOffSwitch function" ); _; }functionflipSwitch(bytesmemory_data) publiconlyOff { (bool success, ) =address(this).call(_data);require(success,"call failed :("); }functionturnSwitchOn() publiconlyThis { switchOn =true; }functionturnSwitchOff() publiconlyThis { switchOn =false; }}