manual hex-decoding since aeson doesn't do it