added base64 encode and decode