123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /**
- * Base64.js
- * https://github.com/davidchambers/Base64.js
- * Apache License 2.0
- */
- ;(function () {
- var object =
- typeof exports != 'undefined' ? exports :
- typeof self != 'undefined' ? self : /* #8: web workers. */
- $.global; /* #31: ExtendScript. */
- var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
- function InvalidCharacterError(message) {
- this.message = message;
- }
- InvalidCharacterError.prototype = new Error;
- InvalidCharacterError.prototype.name = 'InvalidCharacterError';
- /**
- * Encoder
- * [https://gist.github.com/999166] by [https://github.com/nignag]
- */
- object.btoa || (
- object.btoa = function (input) {
- var str = String(input);
- for (
- /* initialize result and counter. */
- var block, charCode, idx = 0, map = chars, output = '';
- /**
- * if the next str index does not exist:
- * change the mapping table to "="
- * check if d has no fractional digits.
- */
- str.charAt(idx | 0) || (map = '=', idx % 1);
- /* "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8. */
- output += map.charAt(63 & block >> 8 - idx % 1 * 8)
- ) {
- charCode = str.charCodeAt(idx += 3/4);
- if (charCode > 0xFF) {
- throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
- }
- block = block << 8 | charCode;
- }
- return output;
- });
- /**
- * Decoder
- * [https://gist.github.com/1020396] by [https://github.com/atk]
- */
- object.atob || (
- object.atob = function (input) {
- var str = String(input).replace(/[=]+$/, ''); /* #31: ExtendScript bad parse of /= */
- if (str.length % 4 == 1) {
- throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded.");
- }
- for (
- /* Initialize result and counters. */
- var bc = 0, bs, buffer, idx = 0, output = '';
- /* Get next character. */
- buffer = str.charAt(idx++);
- /* Character found in table? initialize bit storage and add its ascii value; */
- ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
- /**
- * and if not first of each 4 characters,
- * convert the first 8 bits to one ascii character.
- */
- bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
- ) {
- /* try to find character in table (0-63, not found => -1) */
- buffer = chars.indexOf(buffer);
- }
- return output;
- });
- }());
|