// SPDX-License-Identifier: MIT pragma solidity ^0.8.26; contract Counter { uint256 public number; address public owner; error NotOwner(); event NumberChanged(uint256 previousNumber, uint256 newNumber); constructor(uint256 initialNumber) { owner = msg.sender; number = initialNumber; } function setNumber(uint256 newNumber) external { if (msg.sender != owner) { revert NotOwner(); } uint256 previousNumber = number; number = newNumber; emit NumberChanged(previousNumber, newNumber); } function increment() external { uint256 previousNumber = number; number++; emit NumberChanged(previousNumber, number); } }