Sin descripción

abc.js 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. var t = t || function (t, e) {
  2. var r = {}, i = r.lib = {}, n = function () { }, o = i.Base = {
  3. extend: function (t) {
  4. n.prototype = this;
  5. var e = new n();
  6. return t && e.mixIn(t), e.hasOwnProperty("init") || (e.init = function () {
  7. e.$super.init.apply(this, arguments);
  8. }), e.init.prototype = e, e.$super = this, e;
  9. },
  10. create: function () {
  11. var t = this.extend();
  12. return t.init.apply(t, arguments), t;
  13. },
  14. init: function () { },
  15. mixIn: function (t) {
  16. for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]);
  17. t.hasOwnProperty("toString") && (this.toString = t.toString);
  18. },
  19. clone: function () {
  20. return this.init.prototype.extend(this);
  21. }
  22. }, s = i.WordArray = o.extend({
  23. init: function (t, e) {
  24. t = this.words = t || [], this.sigBytes = void 0 != e ? e : 4 * t.length;
  25. },
  26. toString: function (t) {
  27. return (t || a).stringify(this);
  28. },
  29. concat: function (t) {
  30. var e = this.words, r = t.words, i = this.sigBytes;
  31. if (t = t.sigBytes, this.clamp(), i % 4) for (var n = 0; n < t; n++) e[i + n >>> 2] |= (r[n >>> 2] >>> 24 - n % 4 * 8 & 255) << 24 - (i + n) % 4 * 8; else if (65535 < r.length) for (n = 0; n < t; n += 4) e[i + n >>> 2] = r[n >>> 2]; else e.push.apply(e, r);
  32. return this.sigBytes += t, this;
  33. },
  34. clamp: function () {
  35. var e = this.words, r = this.sigBytes;
  36. e[r >>> 2] &= 4294967295 << 32 - r % 4 * 8, e.length = t.ceil(r / 4);
  37. },
  38. clone: function () {
  39. var t = o.clone.call(this);
  40. return t.words = this.words.slice(0), t;
  41. },
  42. random: function (e) {
  43. for (var r = [], i = 0; i < e; i += 4) r.push(4294967296 * t.random() | 0);
  44. return new s.init(r, e);
  45. }
  46. }), c = r.enc = {}, a = c.Hex = {
  47. stringify: function (t) {
  48. var e = t.words;
  49. t = t.sigBytes;
  50. for (var r = [], i = 0; i < t; i++) {
  51. var n = e[i >>> 2] >>> 24 - i % 4 * 8 & 255;
  52. r.push((n >>> 4).toString(16)), r.push((15 & n).toString(16));
  53. }
  54. return r.join("");
  55. },
  56. parse: function (t) {
  57. for (var e = t.length, r = [], i = 0; i < e; i += 2) r[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4;
  58. return new s.init(r, e / 2);
  59. }
  60. }, f = c.Latin1 = {
  61. stringify: function (t) {
  62. var e = t.words;
  63. t = t.sigBytes;
  64. for (var r = [], i = 0; i < t; i++) r.push(String.fromCharCode(e[i >>> 2] >>> 24 - i % 4 * 8 & 255));
  65. return r.join("");
  66. },
  67. parse: function (t) {
  68. for (var e = t.length, r = [], i = 0; i < e; i++) r[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8;
  69. return new s.init(r, e);
  70. }
  71. }, h = c.Utf8 = {
  72. stringify: function (t) {
  73. try {
  74. return decodeURIComponent(escape(f.stringify(t)));
  75. } catch (t) {
  76. throw Error("Malformed UTF-8 data");
  77. }
  78. },
  79. parse: function (t) {
  80. return f.parse(unescape(encodeURIComponent(t)));
  81. }
  82. }, u = i.BufferedBlockAlgorithm = o.extend({
  83. reset: function () {
  84. this._data = new s.init(), this._nDataBytes = 0;
  85. },
  86. _append: function (t) {
  87. "string" == typeof t && (t = h.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes;
  88. },
  89. _process: function (e) {
  90. var r = this._data, i = r.words, n = r.sigBytes, o = this.blockSize, c = n / (4 * o);
  91. if (e = (c = e ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0)) * o, n = t.min(4 * e, n),
  92. e) {
  93. for (var a = 0; a < e; a += o) this._doProcessBlock(i, a);
  94. a = i.splice(0, e), r.sigBytes -= n;
  95. }
  96. return new s.init(a, n);
  97. },
  98. clone: function () {
  99. var t = o.clone.call(this);
  100. return t._data = this._data.clone(), t;
  101. },
  102. _minBufferSize: 0
  103. });
  104. i.Hasher = u.extend({
  105. cfg: o.extend(),
  106. init: function (t) {
  107. this.cfg = this.cfg.extend(t), this.reset();
  108. },
  109. reset: function () {
  110. u.reset.call(this), this._doReset();
  111. },
  112. update: function (t) {
  113. return this._append(t), this._process(), this;
  114. },
  115. finalize: function (t) {
  116. return t && this._append(t), this._doFinalize();
  117. },
  118. blockSize: 16,
  119. _createHelper: function (t) {
  120. return function (e, r) {
  121. return new t.init(r).finalize(e);
  122. };
  123. },
  124. _createHmacHelper: function (t) {
  125. return function (e, r) {
  126. return new p.HMAC.init(t, r).finalize(e);
  127. };
  128. }
  129. });
  130. var p = r.algo = {};
  131. return r;
  132. }(Math);
  133. !function () {
  134. var e = t, r = e.lib.WordArray;
  135. e.enc.Base64 = {
  136. stringify: function (t) {
  137. var e = t.words, r = t.sigBytes, i = this._map;
  138. t.clamp(), t = [];
  139. for (var n = 0; n < r; n += 3) for (var o = (e[n >>> 2] >>> 24 - n % 4 * 8 & 255) << 16 | (e[n + 1 >>> 2] >>> 24 - (n + 1) % 4 * 8 & 255) << 8 | e[n + 2 >>> 2] >>> 24 - (n + 2) % 4 * 8 & 255, s = 0; 4 > s && n + .75 * s < r; s++) t.push(i.charAt(o >>> 6 * (3 - s) & 63));
  140. if (e = i.charAt(64)) for (; t.length % 4;) t.push(e);
  141. return t.join("");
  142. },
  143. parse: function (t) {
  144. var e = t.length, i = this._map;
  145. (n = i.charAt(64)) && -1 != (n = t.indexOf(n)) && (e = n);
  146. for (var n = [], o = 0, s = 0; s < e; s++) if (s % 4) {
  147. var c = i.indexOf(t.charAt(s - 1)) << s % 4 * 2, a = i.indexOf(t.charAt(s)) >>> 6 - s % 4 * 2;
  148. n[o >>> 2] |= (c | a) << 24 - o % 4 * 8, o++;
  149. }
  150. return r.create(n, o);
  151. },
  152. _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  153. };
  154. }(), function (e) {
  155. function r(t, e, r, i, n, o, s) {
  156. return ((t = t + (e & r | ~e & i) + n + s) << o | t >>> 32 - o) + e;
  157. }
  158. function i(t, e, r, i, n, o, s) {
  159. return ((t = t + (e & i | r & ~i) + n + s) << o | t >>> 32 - o) + e;
  160. }
  161. function n(t, e, r, i, n, o, s) {
  162. return ((t = t + (e ^ r ^ i) + n + s) << o | t >>> 32 - o) + e;
  163. }
  164. function o(t, e, r, i, n, o, s) {
  165. return ((t = t + (r ^ (e | ~i)) + n + s) << o | t >>> 32 - o) + e;
  166. }
  167. for (var s = t, c = (f = s.lib).WordArray, a = f.Hasher, f = s.algo, h = [], u = 0; 64 > u; u++) h[u] = 4294967296 * e.abs(e.sin(u + 1)) | 0;
  168. f = f.MD5 = a.extend({
  169. _doReset: function () {
  170. this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]);
  171. },
  172. _doProcessBlock: function (t, e) {
  173. for (s = 0; 16 > s; s++) {
  174. a = t[c = e + s];
  175. t[c] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8);
  176. }
  177. var s = this._hash.words, c = t[e + 0], a = t[e + 1], f = t[e + 2], u = t[e + 3], p = t[e + 4], d = t[e + 5], l = t[e + 6], y = t[e + 7], v = t[e + 8], _ = t[e + 9], g = t[e + 10], B = t[e + 11], k = t[e + 12], x = t[e + 13], m = t[e + 14], S = t[e + 15], w = s[0], z = s[1], C = s[2], E = s[3], z = o(z = o(z = o(z = o(z = n(z = n(z = n(z = n(z = i(z = i(z = i(z = i(z = r(z = r(z = r(z = r(z, C = r(C, E = r(E, w = r(w, z, C, E, c, 7, h[0]), z, C, a, 12, h[1]), w, z, f, 17, h[2]), E, w, u, 22, h[3]), C = r(C, E = r(E, w = r(w, z, C, E, p, 7, h[4]), z, C, d, 12, h[5]), w, z, l, 17, h[6]), E, w, y, 22, h[7]), C = r(C, E = r(E, w = r(w, z, C, E, v, 7, h[8]), z, C, _, 12, h[9]), w, z, g, 17, h[10]), E, w, B, 22, h[11]), C = r(C, E = r(E, w = r(w, z, C, E, k, 7, h[12]), z, C, x, 12, h[13]), w, z, m, 17, h[14]), E, w, S, 22, h[15]), C = i(C, E = i(E, w = i(w, z, C, E, a, 5, h[16]), z, C, l, 9, h[17]), w, z, B, 14, h[18]), E, w, c, 20, h[19]), C = i(C, E = i(E, w = i(w, z, C, E, d, 5, h[20]), z, C, g, 9, h[21]), w, z, S, 14, h[22]), E, w, p, 20, h[23]), C = i(C, E = i(E, w = i(w, z, C, E, _, 5, h[24]), z, C, m, 9, h[25]), w, z, u, 14, h[26]), E, w, v, 20, h[27]), C = i(C, E = i(E, w = i(w, z, C, E, x, 5, h[28]), z, C, f, 9, h[29]), w, z, y, 14, h[30]), E, w, k, 20, h[31]), C = n(C, E = n(E, w = n(w, z, C, E, d, 4, h[32]), z, C, v, 11, h[33]), w, z, B, 16, h[34]), E, w, m, 23, h[35]), C = n(C, E = n(E, w = n(w, z, C, E, a, 4, h[36]), z, C, p, 11, h[37]), w, z, y, 16, h[38]), E, w, g, 23, h[39]), C = n(C, E = n(E, w = n(w, z, C, E, x, 4, h[40]), z, C, c, 11, h[41]), w, z, u, 16, h[42]), E, w, l, 23, h[43]), C = n(C, E = n(E, w = n(w, z, C, E, _, 4, h[44]), z, C, k, 11, h[45]), w, z, S, 16, h[46]), E, w, f, 23, h[47]), C = o(C, E = o(E, w = o(w, z, C, E, c, 6, h[48]), z, C, y, 10, h[49]), w, z, m, 15, h[50]), E, w, d, 21, h[51]), C = o(C, E = o(E, w = o(w, z, C, E, k, 6, h[52]), z, C, u, 10, h[53]), w, z, g, 15, h[54]), E, w, a, 21, h[55]), C = o(C, E = o(E, w = o(w, z, C, E, v, 6, h[56]), z, C, S, 10, h[57]), w, z, l, 15, h[58]), E, w, x, 21, h[59]), C = o(C, E = o(E, w = o(w, z, C, E, p, 6, h[60]), z, C, B, 10, h[61]), w, z, f, 15, h[62]), E, w, _, 21, h[63]);
  178. s[0] = s[0] + w | 0, s[1] = s[1] + z | 0, s[2] = s[2] + C | 0, s[3] = s[3] + E | 0;
  179. },
  180. _doFinalize: function () {
  181. var t = this._data, r = t.words, i = 8 * this._nDataBytes, n = 8 * t.sigBytes;
  182. r[n >>> 5] |= 128 << 24 - n % 32;
  183. var o = e.floor(i / 4294967296);
  184. for (r[15 + (n + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8),
  185. r[14 + (n + 64 >>> 9 << 4)] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8),
  186. t.sigBytes = 4 * (r.length + 1), this._process(), r = (t = this._hash).words, i = 0; 4 > i; i++) n = r[i],
  187. r[i] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8);
  188. return t;
  189. },
  190. clone: function () {
  191. var t = a.clone.call(this);
  192. return t._hash = this._hash.clone(), t;
  193. }
  194. }), s.MD5 = a._createHelper(f), s.HmacMD5 = a._createHmacHelper(f);
  195. }(Math), function () {
  196. var e = t, r = e.lib, i = r.Base, n = r.WordArray, o = (r = e.algo).EvpKDF = i.extend({
  197. cfg: i.extend({
  198. keySize: 4,
  199. hasher: r.MD5,
  200. iterations: 1
  201. }),
  202. init: function (t) {
  203. this.cfg = this.cfg.extend(t);
  204. },
  205. compute: function (t, e) {
  206. for (var r = (c = this.cfg).hasher.create(), i = n.create(), o = i.words, s = c.keySize, c = c.iterations; o.length < s;) {
  207. a && r.update(a);
  208. var a = r.update(t).finalize(e);
  209. r.reset();
  210. for (var f = 1; f < c; f++) a = r.finalize(a), r.reset();
  211. i.concat(a);
  212. }
  213. return i.sigBytes = 4 * s, i;
  214. }
  215. });
  216. e.EvpKDF = function (t, e, r) {
  217. return o.create(r).compute(t, e);
  218. };
  219. }(), t.lib.Cipher || function (e) {
  220. var r = (l = t).lib, i = r.Base, n = r.WordArray, o = r.BufferedBlockAlgorithm, s = l.enc.Base64, c = l.algo.EvpKDF, a = r.Cipher = o.extend({
  221. cfg: i.extend(),
  222. createEncryptor: function (t, e) {
  223. return this.create(this._ENC_XFORM_MODE, t, e);
  224. },
  225. createDecryptor: function (t, e) {
  226. return this.create(this._DEC_XFORM_MODE, t, e);
  227. },
  228. init: function (t, e, r) {
  229. this.cfg = this.cfg.extend(r), this._xformMode = t, this._key = e, this.reset();
  230. },
  231. reset: function () {
  232. o.reset.call(this), this._doReset();
  233. },
  234. process: function (t) {
  235. return this._append(t), this._process();
  236. },
  237. finalize: function (t) {
  238. return t && this._append(t), this._doFinalize();
  239. },
  240. keySize: 4,
  241. ivSize: 4,
  242. _ENC_XFORM_MODE: 1,
  243. _DEC_XFORM_MODE: 2,
  244. _createHelper: function (t) {
  245. return {
  246. encrypt: function (e, r, i) {
  247. return ("string" == typeof r ? y : d).encrypt(t, e, r, i);
  248. },
  249. decrypt: function (e, r, i) {
  250. return ("string" == typeof r ? y : d).decrypt(t, e, r, i);
  251. }
  252. };
  253. }
  254. });
  255. r.StreamCipher = a.extend({
  256. _doFinalize: function () {
  257. return this._process(!0);
  258. },
  259. blockSize: 1
  260. });
  261. var f = l.mode = {}, h = function (t, e, r) {
  262. var i = this._iv;
  263. i ? this._iv = void 0 : i = this._prevBlock;
  264. for (var n = 0; n < r; n++) t[e + n] ^= i[n];
  265. }, u = (r.BlockCipherMode = i.extend({
  266. createEncryptor: function (t, e) {
  267. return this.Encryptor.create(t, e);
  268. },
  269. createDecryptor: function (t, e) {
  270. return this.Decryptor.create(t, e);
  271. },
  272. init: function (t, e) {
  273. this._cipher = t, this._iv = e;
  274. }
  275. })).extend();
  276. u.Encryptor = u.extend({
  277. processBlock: function (t, e) {
  278. var r = this._cipher, i = r.blockSize;
  279. h.call(this, t, e, i), r.encryptBlock(t, e), this._prevBlock = t.slice(e, e + i);
  280. }
  281. }), u.Decryptor = u.extend({
  282. processBlock: function (t, e) {
  283. var r = this._cipher, i = r.blockSize, n = t.slice(e, e + i);
  284. r.decryptBlock(t, e), h.call(this, t, e, i), this._prevBlock = n;
  285. }
  286. }), f = f.CBC = u, u = (l.pad = {}).Pkcs7 = {
  287. pad: function (t, e) {
  288. for (var r = 4 * e, i = (r = r - t.sigBytes % r) << 24 | r << 16 | r << 8 | r, o = [], s = 0; s < r; s += 4) o.push(i);
  289. r = n.create(o, r), t.concat(r);
  290. },
  291. unpad: function (t) {
  292. t.sigBytes -= 255 & t.words[t.sigBytes - 1 >>> 2];
  293. }
  294. }, r.BlockCipher = a.extend({
  295. cfg: a.cfg.extend({
  296. mode: f,
  297. padding: u
  298. }),
  299. reset: function () {
  300. a.reset.call(this);
  301. var t = (e = this.cfg).iv, e = e.mode;
  302. if (this._xformMode == this._ENC_XFORM_MODE) var r = e.createEncryptor; else r = e.createDecryptor,
  303. this._minBufferSize = 1;
  304. this._mode = r.call(e, this, t && t.words);
  305. },
  306. _doProcessBlock: function (t, e) {
  307. this._mode.processBlock(t, e);
  308. },
  309. _doFinalize: function () {
  310. var t = this.cfg.padding;
  311. if (this._xformMode == this._ENC_XFORM_MODE) {
  312. t.pad(this._data, this.blockSize);
  313. var e = this._process(!0);
  314. } else e = this._process(!0), t.unpad(e);
  315. return e;
  316. },
  317. blockSize: 4
  318. });
  319. var p = r.CipherParams = i.extend({
  320. init: function (t) {
  321. this.mixIn(t);
  322. },
  323. toString: function (t) {
  324. return (t || this.formatter).stringify(this);
  325. }
  326. }), f = (l.format = {}).OpenSSL = {
  327. stringify: function (t) {
  328. var e = t.ciphertext;
  329. return ((t = t.salt) ? n.create([1398893684, 1701076831]).concat(t).concat(e) : e).toString(s);
  330. },
  331. parse: function (t) {
  332. var e = (t = s.parse(t)).words;
  333. if (1398893684 == e[0] && 1701076831 == e[1]) {
  334. var r = n.create(e.slice(2, 4));
  335. e.splice(0, 4), t.sigBytes -= 16;
  336. }
  337. return p.create({
  338. ciphertext: t,
  339. salt: r
  340. });
  341. }
  342. }, d = r.SerializableCipher = i.extend({
  343. cfg: i.extend({
  344. format: f
  345. }),
  346. encrypt: function (t, e, r, i) {
  347. i = this.cfg.extend(i);
  348. var n = t.createEncryptor(r, i);
  349. return e = n.finalize(e), n = n.cfg, p.create({
  350. ciphertext: e,
  351. key: r,
  352. iv: n.iv,
  353. algorithm: t,
  354. mode: n.mode,
  355. padding: n.padding,
  356. blockSize: t.blockSize,
  357. formatter: i.format
  358. });
  359. },
  360. decrypt: function (t, e, r, i) {
  361. return i = this.cfg.extend(i), e = this._parse(e, i.format), t.createDecryptor(r, i).finalize(e.ciphertext);
  362. },
  363. _parse: function (t, e) {
  364. return "string" == typeof t ? e.parse(t, this) : t;
  365. }
  366. }), l = (l.kdf = {}).OpenSSL = {
  367. execute: function (t, e, r, i) {
  368. return i || (i = n.random(8)), t = c.create({
  369. keySize: e + r
  370. }).compute(t, i), r = n.create(t.words.slice(e), 4 * r), t.sigBytes = 4 * e, p.create({
  371. key: t,
  372. iv: r,
  373. salt: i
  374. });
  375. }
  376. }, y = r.PasswordBasedCipher = d.extend({
  377. cfg: d.cfg.extend({
  378. kdf: l
  379. }),
  380. encrypt: function (t, e, r, i) {
  381. return i = this.cfg.extend(i), r = i.kdf.execute(r, t.keySize, t.ivSize), i.iv = r.iv,
  382. (t = d.encrypt.call(this, t, e, r.key, i)).mixIn(r), t;
  383. },
  384. decrypt: function (t, e, r, i) {
  385. return i = this.cfg.extend(i), e = this._parse(e, i.format), r = i.kdf.execute(r, t.keySize, t.ivSize, e.salt),
  386. i.iv = r.iv, d.decrypt.call(this, t, e, r.key, i);
  387. }
  388. });
  389. }(), function () {
  390. for (var e = t, r = e.lib.BlockCipher, i = e.algo, n = [], o = [], s = [], c = [], a = [], f = [], h = [], u = [], p = [], d = [], l = [], y = 0; 256 > y; y++) l[y] = 128 > y ? y << 1 : y << 1 ^ 283;
  391. for (var v = 0, _ = 0, y = 0; 256 > y; y++) {
  392. var g = (g = _ ^ _ << 1 ^ _ << 2 ^ _ << 3 ^ _ << 4) >>> 8 ^ 255 & g ^ 99;
  393. n[v] = g, o[g] = v;
  394. var B = l[v], k = l[B], x = l[k], m = 257 * l[g] ^ 16843008 * g;
  395. s[v] = m << 24 | m >>> 8, c[v] = m << 16 | m >>> 16, a[v] = m << 8 | m >>> 24, f[v] = m,
  396. m = 16843009 * x ^ 65537 * k ^ 257 * B ^ 16843008 * v, h[g] = m << 24 | m >>> 8,
  397. u[g] = m << 16 | m >>> 16, p[g] = m << 8 | m >>> 24, d[g] = m, v ? (v = B ^ l[l[l[x ^ B]]],
  398. _ ^= l[l[_]]) : v = _ = 1;
  399. }
  400. var S = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], i = i.AES = r.extend({
  401. _doReset: function () {
  402. for (var t = (r = this._key).words, e = r.sigBytes / 4, r = 4 * ((this._nRounds = e + 6) + 1), i = this._keySchedule = [], o = 0; o < r; o++) if (o < e) i[o] = t[o]; else {
  403. var s = i[o - 1];
  404. o % e ? 6 < e && 4 == o % e && (s = n[s >>> 24] << 24 | n[s >>> 16 & 255] << 16 | n[s >>> 8 & 255] << 8 | n[255 & s]) : (s = s << 8 | s >>> 24,
  405. s = n[s >>> 24] << 24 | n[s >>> 16 & 255] << 16 | n[s >>> 8 & 255] << 8 | n[255 & s],
  406. s ^= S[o / e | 0] << 24), i[o] = i[o - e] ^ s;
  407. }
  408. for (t = this._invKeySchedule = [], e = 0; e < r; e++) o = r - e, s = e % 4 ? i[o] : i[o - 4],
  409. t[e] = 4 > e || 4 >= o ? s : h[n[s >>> 24]] ^ u[n[s >>> 16 & 255]] ^ p[n[s >>> 8 & 255]] ^ d[n[255 & s]];
  410. },
  411. encryptBlock: function (t, e) {
  412. this._doCryptBlock(t, e, this._keySchedule, s, c, a, f, n);
  413. },
  414. decryptBlock: function (t, e) {
  415. var r = t[e + 1];
  416. t[e + 1] = t[e + 3], t[e + 3] = r, this._doCryptBlock(t, e, this._invKeySchedule, h, u, p, d, o),
  417. r = t[e + 1], t[e + 1] = t[e + 3], t[e + 3] = r;
  418. },
  419. _doCryptBlock: function (t, e, r, i, n, o, s, c) {
  420. for (var a = this._nRounds, f = t[e] ^ r[0], h = t[e + 1] ^ r[1], u = t[e + 2] ^ r[2], p = t[e + 3] ^ r[3], d = 4, l = 1; l < a; l++) var y = i[f >>> 24] ^ n[h >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & p] ^ r[d++], v = i[h >>> 24] ^ n[u >>> 16 & 255] ^ o[p >>> 8 & 255] ^ s[255 & f] ^ r[d++], _ = i[u >>> 24] ^ n[p >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & h] ^ r[d++], p = i[p >>> 24] ^ n[f >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & u] ^ r[d++], f = y, h = v, u = _;
  421. y = (c[f >>> 24] << 24 | c[h >>> 16 & 255] << 16 | c[u >>> 8 & 255] << 8 | c[255 & p]) ^ r[d++],
  422. v = (c[h >>> 24] << 24 | c[u >>> 16 & 255] << 16 | c[p >>> 8 & 255] << 8 | c[255 & f]) ^ r[d++],
  423. _ = (c[u >>> 24] << 24 | c[p >>> 16 & 255] << 16 | c[f >>> 8 & 255] << 8 | c[255 & h]) ^ r[d++],
  424. p = (c[p >>> 24] << 24 | c[f >>> 16 & 255] << 16 | c[h >>> 8 & 255] << 8 | c[255 & u]) ^ r[d++],
  425. t[e] = y, t[e + 1] = v, t[e + 2] = _, t[e + 3] = p;
  426. },
  427. keySize: 8
  428. });
  429. e.AES = r._createHelper(i);
  430. }(), t.enc.u8array = {
  431. stringify: function (t) {
  432. for (var e = t.words, r = t.sigBytes, i = new Uint8Array(r), n = 0; n < r; n++) {
  433. var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255;
  434. i[n] = o;
  435. }
  436. return i;
  437. },
  438. parse: function (e) {
  439. for (var r = e.length, i = [], n = 0; n < r; n++) i[n >>> 2] |= (255 & e[n]) << 24 - n % 4 * 8;
  440. return t.lib.WordArray.create(i, r);
  441. }
  442. }, t.enc.int8array = {
  443. stringify: function (t) {
  444. for (var e = t.words, r = t.sigBytes, i = new Int8Array(r), n = 0; n < r; n++) {
  445. var o = e[n >>> 2] >> 24 - n % 4 * 8 & 255;
  446. i[n] = o;
  447. }
  448. return i;
  449. },
  450. parse: function (e) {
  451. for (var r = e.length, i = [], n = 0; n < r; n++) i[n >>> 2] |= (255 & e[n]) << 24 - n % 4 * 8;
  452. return t.lib.WordArray.create(i, r);
  453. }
  454. }, t.enc.int16array = {
  455. stringify: function (t) {
  456. for (var e = t.words, r = t.sigBytes, i = new Uint8Array(r), n = 0; n < r; n++) {
  457. var o = e[n >>> 2] >>> 24 - n % 4 * 8 & 255;
  458. i[n] = o;
  459. }
  460. return i;
  461. },
  462. parse: function (e) {
  463. for (var r = e.length, i = [], n = 0; n < r; n++) i[n >>> 2] |= (255 & e[n]) << 24 - n % 4 * 8;
  464. return t.lib.WordArray.create(i, r);
  465. }
  466. }, t.mode.CFB = function () {
  467. function e(t, e, r, i) {
  468. var n = this._iv;
  469. if (n) {
  470. o = n.slice(0);
  471. this._iv = void 0;
  472. } else var o = this._prevBlock;
  473. i.encryptBlock(o, 0);
  474. for (var s = 0; s < r; s++) t[e + s] ^= o[s];
  475. }
  476. var r = t.lib.BlockCipherMode.extend();
  477. return r.Encryptor = r.extend({
  478. processBlock: function (t, r) {
  479. var i = this._cipher, n = i.blockSize;
  480. e.call(this, t, r, n, i), this._prevBlock = t.slice(r, r + n);
  481. }
  482. }), r.Decryptor = r.extend({
  483. processBlock: function (t, r) {
  484. var i = this._cipher, n = i.blockSize, o = t.slice(r, r + n);
  485. e.call(this, t, r, n, i), this._prevBlock = o;
  486. }
  487. }), r;
  488. }(), t.mode.ECB = function () {
  489. var e = t.lib.BlockCipherMode.extend();
  490. return e.Encryptor = e.extend({
  491. processBlock: function (t, e) {
  492. this._cipher.encryptBlock(t, e);
  493. }
  494. }), e.Decryptor = e.extend({
  495. processBlock: function (t, e) {
  496. this._cipher.decryptBlock(t, e);
  497. }
  498. }), e;
  499. }(), t.pad.NoPadding = {
  500. pad: function () { },
  501. unpad: function () { }
  502. }, module.exports = {
  503. CryptoJS: t
  504. };