{"language":"Solidity","sources":{"TokenDeposit.sol":{"content":"pragma solidity ^0.8.29;\n\ncontract TokenDeposit {\n    mapping(address => uint256) public balances;\n\n    event Deposit(address indexed from, uint256 amount);\n    event Withdrawal(address indexed to, uint256 amount);\n\n    function deposit() public payable {\n        require(msg.value > 0, \"Deposit amount must be greater than zero\");\n        balances[msg.sender] += msg.value;\n        emit Deposit(msg.sender, msg.value);\n    }\n\n    function withdraw(uint256 amount) public {\n        require(balances[msg.sender] >= amount, \"Insufficient balance\");\n        balances[msg.sender] -= amount;\n        payable(msg.sender).transfer(amount);\n        emit Withdrawal(msg.sender, amount);\n    }\n\n    function getBalance() public view returns (uint256) {\n        return balances[msg.sender];\n    }\n}"}},"settings":{"outputSelection":{"*":{"*":["*"]}},"optimizer":{"enabled":true,"runs":200}}}