{"ast":null,"code":"(function () {\n  var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n      crypt = {\n    // Bit-wise rotation left\n    rotl: function (n, b) {\n      return n << b | n >>> 32 - b;\n    },\n    // Bit-wise rotation right\n    rotr: function (n, b) {\n      return n << 32 - b | n >>> b;\n    },\n    // Swap big-endian to little-endian and vice versa\n    endian: function (n) {\n      // If number given, swap endian\n      if (n.constructor == Number) {\n        return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n      } // Else, assume array and swap all items\n\n\n      for (var i = 0; i < n.length; i++) n[i] = crypt.endian(n[i]);\n\n      return n;\n    },\n    // Generate an array of any length of random bytes\n    randomBytes: function (n) {\n      for (var bytes = []; n > 0; n--) bytes.push(Math.floor(Math.random() * 256));\n\n      return bytes;\n    },\n    // Convert a byte array to big-endian 32-bit words\n    bytesToWords: function (bytes) {\n      for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) words[b >>> 5] |= bytes[i] << 24 - b % 32;\n\n      return words;\n    },\n    // Convert big-endian 32-bit words to a byte array\n    wordsToBytes: function (words) {\n      for (var bytes = [], b = 0; b < words.length * 32; b += 8) bytes.push(words[b >>> 5] >>> 24 - b % 32 & 0xFF);\n\n      return bytes;\n    },\n    // Convert a byte array to a hex string\n    bytesToHex: function (bytes) {\n      for (var hex = [], i = 0; i < bytes.length; i++) {\n        hex.push((bytes[i] >>> 4).toString(16));\n        hex.push((bytes[i] & 0xF).toString(16));\n      }\n\n      return hex.join('');\n    },\n    // Convert a hex string to a byte array\n    hexToBytes: function (hex) {\n      for (var bytes = [], c = 0; c < hex.length; c += 2) bytes.push(parseInt(hex.substr(c, 2), 16));\n\n      return bytes;\n    },\n    // Convert a byte array to a base-64 string\n    bytesToBase64: function (bytes) {\n      for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n        var triplet = bytes[i] << 16 | bytes[i + 1] << 8 | bytes[i + 2];\n\n        for (var j = 0; j < 4; j++) if (i * 8 + j * 6 <= bytes.length * 8) base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 0x3F));else base64.push('=');\n      }\n\n      return base64.join('');\n    },\n    // Convert a base-64 string to a byte array\n    base64ToBytes: function (base64) {\n      // Remove non-base-64 characters\n      base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n      for (var bytes = [], i = 0, imod4 = 0; i < base64.length; imod4 = ++i % 4) {\n        if (imod4 == 0) continue;\n        bytes.push((base64map.indexOf(base64.charAt(i - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i)) >>> 6 - imod4 * 2);\n      }\n\n      return bytes;\n    }\n  };\n  module.exports = crypt;\n})();","map":null,"metadata":{},"sourceType":"script"}