No no no.
The accepted answer above is incorrect, and the fact that you've accepted it means that not many users will even read your question (let alone try to answer it).
The integer value of 1000000000000000000 is indeed larger than Number.MAX_SAFE_INTEGER, and you should therefore use "1000000000000000000" or "1e18". But that's not what the error ...
After testing in Remix everything works just fine. I deployed the code, I called depo with value and tested all the functions. Because I'm not sure if you can see contract's balance in some way directly in Remix I added an extra function to return the current contract balance and called that function after every withdraw function call to verify the results.
Receipts are basically for proving logs and events, rather than details of a transaction.
Vitalik Buterin gave an example of using receipts, as well as other examples that can be answered with Merkle proofs:
Has this transaction been included in a particular block?
Tell me all instances of an ...
No your account is safe or, better, if you still have the private key of the account you are interested in, your money and your account are safe. You are definitively able to recover them using some other wallet. I use CIPHER on iOS and it is ok. On the other side, simply add a new account in metamask giving the private key when asked for it. Nothing more.
You can get your accounts back by clicking "Create Account" (once per each account).
The accounts are there, however they are not shown until you add them.
If the accounts that show up do not match what you are expecting, then you are using an incorrect seed.