| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 | 
							- ;(function (root, factory) {
 
- 	if (typeof exports === "object") {
 
- 		// CommonJS
 
- 		module.exports = exports = factory(require("./core"));
 
- 	}
 
- 	else if (typeof define === "function" && define.amd) {
 
- 		// AMD
 
- 		define(["./core"], factory);
 
- 	}
 
- 	else {
 
- 		// Global (browser)
 
- 		factory(root.CryptoJS);
 
- 	}
 
- }(this, function (CryptoJS) {
 
- 	(function () {
 
- 	    // Shortcuts
 
- 	    var C = CryptoJS;
 
- 	    var C_lib = C.lib;
 
- 	    var WordArray = C_lib.WordArray;
 
- 	    var C_enc = C.enc;
 
- 	    /**
 
- 	     * Base64 encoding strategy.
 
- 	     */
 
- 	    var Base64 = C_enc.Base64 = {
 
- 	        /**
 
- 	         * Converts a word array to a Base64 string.
 
- 	         *
 
- 	         * @param {WordArray} wordArray The word array.
 
- 	         *
 
- 	         * @return {string} The Base64 string.
 
- 	         *
 
- 	         * @static
 
- 	         *
 
- 	         * @example
 
- 	         *
 
- 	         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);
 
- 	         */
 
- 	        stringify: function (wordArray) {
 
- 	            // Shortcuts
 
- 	            var words = wordArray.words;
 
- 	            var sigBytes = wordArray.sigBytes;
 
- 	            var map = this._map;
 
- 	            // Clamp excess bits
 
- 	            wordArray.clamp();
 
- 	            // Convert
 
- 	            var base64Chars = [];
 
- 	            for (var i = 0; i < sigBytes; i += 3) {
 
- 	                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;
 
- 	                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;
 
- 	                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;
 
- 	                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;
 
- 	                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {
 
- 	                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));
 
- 	                }
 
- 	            }
 
- 	            // Add padding
 
- 	            var paddingChar = map.charAt(64);
 
- 	            if (paddingChar) {
 
- 	                while (base64Chars.length % 4) {
 
- 	                    base64Chars.push(paddingChar);
 
- 	                }
 
- 	            }
 
- 	            return base64Chars.join('');
 
- 	        },
 
- 	        /**
 
- 	         * Converts a Base64 string to a word array.
 
- 	         *
 
- 	         * @param {string} base64Str The Base64 string.
 
- 	         *
 
- 	         * @return {WordArray} The word array.
 
- 	         *
 
- 	         * @static
 
- 	         *
 
- 	         * @example
 
- 	         *
 
- 	         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);
 
- 	         */
 
- 	        parse: function (base64Str) {
 
- 	            // Shortcuts
 
- 	            var base64StrLength = base64Str.length;
 
- 	            var map = this._map;
 
- 	            var reverseMap = this._reverseMap;
 
- 	            if (!reverseMap) {
 
- 	                    reverseMap = this._reverseMap = [];
 
- 	                    for (var j = 0; j < map.length; j++) {
 
- 	                        reverseMap[map.charCodeAt(j)] = j;
 
- 	                    }
 
- 	            }
 
- 	            // Ignore padding
 
- 	            var paddingChar = map.charAt(64);
 
- 	            if (paddingChar) {
 
- 	                var paddingIndex = base64Str.indexOf(paddingChar);
 
- 	                if (paddingIndex !== -1) {
 
- 	                    base64StrLength = paddingIndex;
 
- 	                }
 
- 	            }
 
- 	            // Convert
 
- 	            return parseLoop(base64Str, base64StrLength, reverseMap);
 
- 	        },
 
- 	        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
 
- 	    };
 
- 	    function parseLoop(base64Str, base64StrLength, reverseMap) {
 
- 	      var words = [];
 
- 	      var nBytes = 0;
 
- 	      for (var i = 0; i < base64StrLength; i++) {
 
- 	          if (i % 4) {
 
- 	              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);
 
- 	              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);
 
- 	              var bitsCombined = bits1 | bits2;
 
- 	              words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);
 
- 	              nBytes++;
 
- 	          }
 
- 	      }
 
- 	      return WordArray.create(words, nBytes);
 
- 	    }
 
- 	}());
 
- 	return CryptoJS.enc.Base64;
 
- }));
 
 
  |